///////////////////////////////////////////////////////////////
//  Copyright 2012 John Maddock. Distributed under the Boost
//  Software License, Version 1.0. (See accompanying file
//  LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt

//
// Compare arithmetic results using fixed_int to GMP results.
//

#ifdef _MSC_VER
#define _SCL_SECURE_NO_WARNINGS
#endif

#include <nil/crypto3/multiprecision/cpp_int.hpp>
#include "test.hpp"

#include <iostream>
#include <iomanip>
#include <fstream>
#include <boost/archive/text_iarchive.hpp>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <boost/archive/binary_oarchive.hpp>
#include <boost/exception/all.hpp>
#include <boost/filesystem.hpp>
#include <boost/filesystem/fstream.hpp>

boost::filesystem::path root;

template<class T>
void test64() {
    using namespace nil::crypto3::multiprecision;

    const char* text_array[] = {"4991075498124186",
                                "-4991075498124186",
                                "750",
                                "-750",
                                "415210192158791091",
                                "-415210192158791091",
                                "2172493004228646",
                                "-2172493004228646",
                                "993",
                                "-993",
                                "801484291299519218",
                                "-801484291299519218",
                                "294605502329193119",
                                "-294605502329193119",
                                "52506",
                                "-52506",
                                "1509449075377",
                                "-1509449075377",
                                "2042599",
                                "-2042599",
                                "228",
                                "-228",
                                "38666759073",
                                "-38666759073",
                                "611489",
                                "-611489",
                                "5393",
                                "-5393",
                                "12930071684",
                                "-12930071684",
                                "3606852234541437552",
                                "-3606852234541437552",
                                "3764404188985662264",
                                "-3764404188985662264",
                                "13300301596736993408",
                                "-13300301596736993408",
                                "3519758520509816019",
                                "-3519758520509816019",
                                "811951798554103911",
                                "-811951798554103911",
                                "2440",
                                "-2440",
                                "175149377023342",
                                "-175149377023342",
                                "5347169560611466452",
                                "-5347169560611466452",
                                "187134495165780485",
                                "-187134495165780485",
                                "761263991097466327",
                                "-761263991097466327",
                                "205",
                                "-205",
                                "7437277938",
                                "-7437277938",
                                "2530448830165700",
                                "-2530448830165700",
                                "3771546153060183",
                                "-3771546153060183",
                                "1238034",
                                "-1238034",
                                "1470",
                                "-1470",
                                "7",
                                "-7",
                                "203065689",
                                "-203065689",
                                "130",
                                "-130",
                                "74717518653749632",
                                "-74717518653749632",
                                "3028698162338",
                                "-3028698162338",
                                "3471587482356581",
                                "-3471587482356581",
                                "34698219712863216",
                                "-34698219712863216",
                                "941191493582057728",
                                "-941191493582057728",
                                "14803251323",
                                "-14803251323",
                                "552076672455",
                                "-552076672455",
                                "410481316632532",
                                "-410481316632532",
                                "6",
                                "-6",
                                "3851011",
                                "-3851011",
                                "12895806074024545",
                                "-12895806074024545",
                                "59538",
                                "-59538",
                                "944776298737546117",
                                "-944776298737546117",
                                "25010240662345",
                                "-25010240662345",
                                "29657097213970",
                                "-29657097213970",
                                "88000252",
                                "-88000252",
                                "545263458410825",
                                "-545263458410825",
                                "216600129907865",
                                "-216600129907865",
                                "262741237793873",
                                "-262741237793873",
                                "226964744",
                                "-226964744",
                                "111776857",
                                "-111776857",
                                "346922769",
                                "-346922769",
                                "7324307011273",
                                "-7324307011273",
                                "182",
                                "-182",
                                "4204",
                                "-4204",
                                "60455",
                                "-60455",
                                "35250836865461",
                                "-35250836865461",
                                "4100298085120029",
                                "-4100298085120029",
                                "6",
                                "-6",
                                "3262369",
                                "-3262369",
                                "103928",
                                "-103928",
                                "82055266594432948",
                                "-82055266594432948",
                                "8",
                                "-8",
                                "1731",
                                "-1731",
                                "338",
                                "-338",
                                "13202690186510006305",
                                "-13202690186510006305",
                                "3916209444926814",
                                "-3916209444926814",
                                "1801701990484582",
                                "-1801701990484582",
                                "54042343363098",
                                "-54042343363098",
                                "86",
                                "-86",
                                "1346703",
                                "-1346703",
                                "34499847353417",
                                "-34499847353417",
                                "870972860051498248",
                                "-870972860051498248",
                                "2676223213",
                                "-2676223213",
                                "10",
                                "-10",
                                "2207730666882",
                                "-2207730666882",
                                "256557933",
                                "-256557933",
                                "742",
                                "-742",
                                "17809514",
                                "-17809514",
                                "41738",
                                "-41738",
                                "937490350973899",
                                "-937490350973899",
                                "10",
                                "-10",
                                "2153955175933399",
                                "-2153955175933399",
                                "21",
                                "-21",
                                "9767",
                                "-9767",
                                "160991545",
                                "-160991545",
                                "5537202949",
                                "-5537202949",
                                "1729222816",
                                "-1729222816",
                                "880543773",
                                "-880543773",
                                "4994415770",
                                "-4994415770",
                                "5667270210124",
                                "-5667270210124",
                                "1789552738407096",
                                "-1789552738407096",
                                "52084908492459",
                                "-52084908492459",
                                "419923376385918098",
                                "-419923376385918098",
                                "193184120308428",
                                "-193184120308428",
                                "3716593161704457",
                                "-3716593161704457",
                                "835313",
                                "-835313",
                                "47794728416344",
                                "-47794728416344",
                                "32162267350660",
                                "-32162267350660",
                                "1",
                                "-1",
                                "6746653265049",
                                "-6746653265049",
                                "72924075986572",
                                "-72924075986572",
                                "4061",
                                "-4061",
                                "1776612112178",
                                "-1776612112178",
                                "798",
                                "-798",
                                "266401037",
                                "-266401037",
                                "6773927626",
                                "-6773927626",
                                "935572859041371",
                                "-935572859041371",
                                "2667878767142547263",
                                "-2667878767142547263",
                                "107694081993",
                                "-107694081993",
                                "2478862",
                                "-2478862",
                                "75439252494463178",
                                "-75439252494463178",
                                "502732137506",
                                "-502732137506",
                                "1345285828338743",
                                "-1345285828338743",
                                "15181",
                                "-15181",
                                "6",
                                "-6",
                                "503497089658971",
                                "-503497089658971",
                                "3925896855680859",
                                "-3925896855680859",
                                "259231",
                                "-259231",
                                "7499637741115431",
                                "-7499637741115431",
                                "16282283214",
                                "-16282283214",
                                "1664259700668569315",
                                "-1664259700668569315",
                                "63205423227654",
                                "-63205423227654",
                                "122839112",
                                "-122839112",
                                "254133246000861645",
                                "-254133246000861645",
                                "324448699",
                                "-324448699",
                                "2634830651678498499",
                                "-2634830651678498499",
                                "65612160397",
                                "-65612160397",
                                "7064926544",
                                "-7064926544",
                                "3816",
                                "-3816",
                                "1964",
                                "-1964",
                                "208639360759781",
                                "-208639360759781",
                                "3910",
                                "-3910",
                                "95080",
                                "-95080",
                                "175945",
                                "-175945",
                                "5880392757177227",
                                "-5880392757177227",
                                "17254376508100660",
                                "-17254376508100660",
                                "16568677462108662019",
                                "-16568677462108662019",
                                "193490",
                                "-193490",
                                "6055816",
                                "-6055816",
                                "4421583059373970",
                                "-4421583059373970",
                                "34879",
                                "-34879",
                                "52778",
                                "-52778",
                                "0",
                                "0",
                                "935000170463558922",
                                "-935000170463558922",
                                "173",
                                "-173",
                                "10327678",
                                "-10327678",
                                "45810516546119519",
                                "-45810516546119519",
                                "8712",
                                "-8712",
                                "1932876094515139",
                                "-1932876094515139",
                                "84388",
                                "-84388",
                                "2050813773845403160",
                                "-2050813773845403160",
                                "1542848238524",
                                "-1542848238524",
                                "1555584758215827",
                                "-1555584758215827",
                                "3571489748",
                                "-3571489748",
                                "18291705113053112226",
                                "-18291705113053112226",
                                "5713248",
                                "-5713248",
                                "43",
                                "-43",
                                "7537188724850197",
                                "-7537188724850197",
                                "3450872745386207",
                                "-3450872745386207",
                                "335595262120",
                                "-335595262120",
                                "481778267224",
                                "-481778267224",
                                "86277827129",
                                "-86277827129",
                                "132147177032651",
                                "-132147177032651",
                                "222305704702019735",
                                "-222305704702019735",
                                "15454425372201",
                                "-15454425372201",
                                "37444",
                                "-37444",
                                "14915074751748",
                                "-14915074751748",
                                "322332143987563",
                                "-322332143987563",
                                "126997604",
                                "-126997604",
                                "484901511158709",
                                "-484901511158709",
                                "7452547923",
                                "-7452547923",
                                "43400437",
                                "-43400437",
                                "950",
                                "-950",
                                "133435748899",
                                "-133435748899",
                                "13225323986",
                                "-13225323986",
                                "113",
                                "-113",
                                "31298263",
                                "-31298263",
                                "33",
                                "-33",
                                "11093233",
                                "-11093233",
                                "13921728621",
                                "-13921728621",
                                "256811828405",
                                "-256811828405",
                                "568533463853249",
                                "-568533463853249",
                                "384553",
                                "-384553",
                                "1046793359495877872",
                                "-1046793359495877872",
                                "3513488911471240501",
                                "-3513488911471240501",
                                "999",
                                "-999",
                                "3257",
                                "-3257",
                                "141868737283",
                                "-141868737283",
                                "97723548",
                                "-97723548",
                                "380232796",
                                "-380232796",
                                "11615871",
                                "-11615871",
                                "2",
                                "-2",
                                "516935083428",
                                "-516935083428",
                                "2767393",
                                "-2767393",
                                "74918721",
                                "-74918721",
                                "7083",
                                "-7083",
                                "497484184665289623",
                                "-497484184665289623",
                                "3309660146889781",
                                "-3309660146889781",
                                "795624163",
                                "-795624163",
                                "1739075",
                                "-1739075",
                                "38737391516580422",
                                "-38737391516580422",
                                "33363484068",
                                "-33363484068",
                                "453947517553",
                                "-453947517553",
                                "7206",
                                "-7206",
                                "912",
                                "-912",
                                "1070565937975",
                                "-1070565937975",
                                "3607679046",
                                "-3607679046",
                                "503313",
                                "-503313",
                                "5384337",
                                "-5384337",
                                "7913554120377",
                                "-7913554120377",
                                "4112847188",
                                "-4112847188",
                                "8191226371802",
                                "-8191226371802",
                                "41268527630506",
                                "-41268527630506",
                                "446828884957609",
                                "-446828884957609",
                                "17378379828995102574",
                                "-17378379828995102574",
                                "802194395",
                                "-802194395",
                                "6459076776036",
                                "-6459076776036",
                                "189",
                                "-189",
                                "456272745323742742",
                                "-456272745323742742",
                                "35245",
                                "-35245",
                                "4142317167",
                                "-4142317167",
                                "240455833189507891",
                                "-240455833189507891",
                                "32426861928",
                                "-32426861928",
                                "3464",
                                "-3464",
                                "15152220677",
                                "-15152220677",
                                "8550134950160679",
                                "-8550134950160679",
                                "226598734",
                                "-226598734",
                                "35686909663",
                                "-35686909663",
                                "59277903563",
                                "-59277903563",
                                "6946537179316043375",
                                "-6946537179316043375",
                                "516198226",
                                "-516198226",
                                "54",
                                "-54",
                                "27406574726722597",
                                "-27406574726722597",
                                "717765982",
                                "-717765982",
                                "540734180837",
                                "-540734180837",
                                "381",
                                "-381",
                                "2883798342",
                                "-2883798342",
                                "2454889904722697593",
                                "-2454889904722697593",
                                "5324758776781459411",
                                "-5324758776781459411",
                                "0",
                                "0",
                                "3",
                                "-3",
                                "758016775051877",
                                "-758016775051877",
                                "6368641396491647651",
                                "-6368641396491647651",
                                "2409862725919775",
                                "-2409862725919775",
                                "19831125",
                                "-19831125",
                                "19839578195623645",
                                "-19839578195623645",
                                "19556929453271",
                                "-19556929453271",
                                "245",
                                "-245",
                                "83382",
                                "-83382",
                                "30044944",
                                "-30044944",
                                "10307835790108389",
                                "-10307835790108389",
                                "266904",
                                "-266904",
                                "29",
                                "-29",
                                "1691697088175268",
                                "-1691697088175268",
                                "6361142035143",
                                "-6361142035143",
                                "440939789",
                                "-440939789",
                                "19836890767598",
                                "-19836890767598",
                                "78676472953102968",
                                "-78676472953102968",
                                "1663",
                                "-1663",
                                "7103",
                                "-7103",
                                "2602952185917450011",
                                "-2602952185917450011",
                                "8018",
                                "-8018",
                                "244",
                                "-244",
                                "1908",
                                "-1908",
                                "394626",
                                "-394626",
                                "559",
                                "-559",
                                "2692219006891972",
                                "-2692219006891972",
                                "13265871632018922",
                                "-13265871632018922",
                                "124",
                                "-124",
                                "222927115625",
                                "-222927115625",
                                "1283014176523",
                                "-1283014176523",
                                "63800278885",
                                "-63800278885",
                                "0",
                                "0",
                                "1829",
                                "-1829",
                                "13920824467759",
                                "-13920824467759",
                                "5133342577177325",
                                "-5133342577177325",
                                "11207577826",
                                "-11207577826",
                                "1482655119893",
                                "-1482655119893",
                                "200471339",
                                "-200471339",
                                "14758141",
                                "-14758141",
                                "29794",
                                "-29794",
                                "17080244",
                                "-17080244",
                                "699",
                                "-699",
                                "33751076",
                                "-33751076",
                                "16396192",
                                "-16396192",
                                "98",
                                "-98",
                                "81983490866862",
                                "-81983490866862",
                                "102679",
                                "-102679",
                                "13",
                                "-13",
                                "300",
                                "-300",
                                "195317",
                                "-195317",
                                "8257",
                                "-8257",
                                "9944069581",
                                "-9944069581",
                                "63162",
                                "-63162",
                                "2814124367772394",
                                "-2814124367772394",
                                "136699870",
                                "-136699870",
                                "2298044154057333478",
                                "-2298044154057333478",
                                "14",
                                "-14",
                                "15514009231077760",
                                "-15514009231077760",
                                "183794877561119741",
                                "-183794877561119741",
                                "1799598",
                                "-1799598",
                                "1873291206216770568",
                                "-1873291206216770568",
                                "31",
                                "-31",
                                "5025013349",
                                "-5025013349",
                                "26376",
                                "-26376",
                                "905247925",
                                "-905247925",
                                "36545804839",
                                "-36545804839",
                                "960743",
                                "-960743",
                                "90208569247342191",
                                "-90208569247342191",
                                "148711261716954186",
                                "-148711261716954186",
                                "15491943",
                                "-15491943",
                                "15539960",
                                "-15539960",
                                "15",
                                "-15",
                                "39",
                                "-39",
                                "7901",
                                "-7901",
                                "2124324987051603",
                                "-2124324987051603",
                                "45033487059826453",
                                "-45033487059826453",
                                "87387056",
                                "-87387056",
                                "13621",
                                "-13621",
                                "36002",
                                "-36002",
                                "130430",
                                "-130430",
                                "65703401",
                                "-65703401",
                                "7703922866",
                                "-7703922866",
                                "171",
                                "-171",
                                "61731",
                                "-61731",
                                "1387",
                                "-1387",
                                "8049274895",
                                "-8049274895",
                                "1951008680589745867",
                                "-1951008680589745867",
                                "2763480591525312699",
                                "-2763480591525312699",
                                "446243894833471417",
                                "-446243894833471417",
                                "5396319104693",
                                "-5396319104693",
                                "162371331057",
                                "-162371331057",
                                "370769520766475",
                                "-370769520766475",
                                "1",
                                "-1",
                                "361477542",
                                "-361477542",
                                "999",
                                "-999",
                                "5869928506",
                                "-5869928506",
                                "10725949",
                                "-10725949",
                                "16",
                                "-16",
                                "4934609875259411",
                                "-4934609875259411",
                                "3909261",
                                "-3909261",
                                "1",
                                "-1",
                                "96362",
                                "-96362",
                                "24",
                                "-24",
                                "206089594430410490",
                                "-206089594430410490",
                                "104",
                                "-104",
                                "5836462606744621",
                                "-5836462606744621",
                                "4267837773445",
                                "-4267837773445",
                                "485898",
                                "-485898",
                                "115640927033286",
                                "-115640927033286",
                                "1554",
                                "-1554",
                                "8719162940811",
                                "-8719162940811",
                                "2870768607",
                                "-2870768607",
                                "1052349661",
                                "-1052349661",
                                "23867197",
                                "-23867197",
                                "45326966103",
                                "-45326966103",
                                "90260998217302",
                                "-90260998217302",
                                "1523891",
                                "-1523891",
                                "666993",
                                "-666993",
                                "107936212247500",
                                "-107936212247500",
                                "1559140486984",
                                "-1559140486984",
                                "5874",
                                "-5874",
                                "5388740994398251",
                                "-5388740994398251",
                                "9448163810439",
                                "-9448163810439",
                                "1654654",
                                "-1654654",
                                "10590",
                                "-10590",
                                "54734468",
                                "-54734468",
                                "30749964",
                                "-30749964",
                                "9811424",
                                "-9811424",
                                "526166608342",
                                "-526166608342",
                                "4115859427270797",
                                "-4115859427270797",
                                "596517644188027",
                                "-596517644188027",
                                "14364215824260",
                                "-14364215824260",
                                "187",
                                "-187",
                                "24260378",
                                "-24260378",
                                "55791469491162660",
                                "-55791469491162660",
                                "2106900391",
                                "-2106900391",
                                "217782523580138",
                                "-217782523580138",
                                "1216259",
                                "-1216259",
                                "3275398462",
                                "-3275398462",
                                "343016100304169644",
                                "-343016100304169644",
                                "957668440",
                                "-957668440",
                                "6471546279",
                                "-6471546279",
                                "614957732",
                                "-614957732",
                                "130810411909693",
                                "-130810411909693",
                                "792104",
                                "-792104",
                                "465",
                                "-465",
                                "7782172074",
                                "-7782172074",
                                "55034847",
                                "-55034847",
                                "6775527365",
                                "-6775527365",
                                "12803753747546578",
                                "-12803753747546578",
                                "6126135608700535",
                                "-6126135608700535",
                                "12740679",
                                "-12740679",
                                "1266634072040501",
                                "-1266634072040501",
                                "348269777058432218",
                                "-348269777058432218",
                                "2184392953733",
                                "-2184392953733",
                                "9522770891",
                                "-9522770891",
                                "37077445",
                                "-37077445",
                                "1364",
                                "-1364",
                                "375540696398769",
                                "-375540696398769",
                                "24230",
                                "-24230",
                                "43119671230",
                                "-43119671230",
                                "1029673322569841213",
                                "-1029673322569841213",
                                "14194736",
                                "-14194736",
                                "4439459006245050525",
                                "-4439459006245050525",
                                "2016679919307343642",
                                "-2016679919307343642",
                                "68490",
                                "-68490",
                                "138373187496830016",
                                "-138373187496830016",
                                "12",
                                "-12",
                                "72731399395",
                                "-72731399395",
                                "103249241",
                                "-103249241",
                                "686434193208",
                                "-686434193208",
                                "2220097226366547",
                                "-2220097226366547",
                                "389615851678",
                                "-389615851678",
                                "1188756152",
                                "-1188756152",
                                "3527",
                                "-3527",
                                "64606107042",
                                "-64606107042",
                                "1628835",
                                "-1628835",
                                "14",
                                "-14",
                                "3398525351",
                                "-3398525351",
                                "192736533293843919",
                                "-192736533293843919",
                                "62739",
                                "-62739",
                                "29797",
                                "-29797",
                                "27022533997970320",
                                "-27022533997970320",
                                "85203884819644813",
                                "-85203884819644813",
                                "16723",
                                "-16723",
                                "720455425",
                                "-720455425",
                                "21193",
                                "-21193",
                                "911",
                                "-911",
                                "7564",
                                "-7564",
                                "9937",
                                "-9937",
                                "17698",
                                "-17698",
                                "3154835669492701",
                                "-3154835669492701",
                                "714419922",
                                "-714419922",
                                "3441710384",
                                "-3441710384",
                                "2302757",
                                "-2302757",
                                "13",
                                "-13",
                                "191092534665719086",
                                "-191092534665719086",
                                "2671438117955",
                                "-2671438117955",
                                "269195401",
                                "-269195401",
                                "1257367614616",
                                "-1257367614616",
                                "15233",
                                "-15233",
                                "242652372681",
                                "-242652372681",
                                "379035516581309513",
                                "-379035516581309513",
                                "234696334636228",
                                "-234696334636228",
                                "2190428804113181503",
                                "-2190428804113181503",
                                "5182131",
                                "-5182131",
                                "35710270",
                                "-35710270",
                                "30830418043327",
                                "-30830418043327",
                                "157",
                                "-157",
                                "56976290639537",
                                "-56976290639537",
                                "429094",
                                "-429094",
                                "8166",
                                "-8166",
                                "259284720",
                                "-259284720",
                                "1974",
                                "-1974",
                                "414549061889",
                                "-414549061889",
                                "12126192",
                                "-12126192",
                                "477683",
                                "-477683",
                                "26",
                                "-26",
                                "200991115623",
                                "-200991115623",
                                "105657935189602",
                                "-105657935189602",
                                "137401581416017",
                                "-137401581416017",
                                "3133",
                                "-3133",
                                "41301",
                                "-41301",
                                "9120545960887397",
                                "-9120545960887397",
                                "615",
                                "-615",
                                "1677628",
                                "-1677628",
                                "487311",
                                "-487311",
                                "6467819698256",
                                "-6467819698256",
                                "2721454",
                                "-2721454",
                                "356423793",
                                "-356423793",
                                "525408497",
                                "-525408497",
                                "1791793366931794",
                                "-1791793366931794",
                                "16267730984",
                                "-16267730984",
                                "787",
                                "-787",
                                "82",
                                "-82",
                                "8594582631777749056",
                                "-8594582631777749056",
                                "494351",
                                "-494351",
                                "5138",
                                "-5138",
                                "404787056092544",
                                "-404787056092544",
                                "235074602368269",
                                "-235074602368269",
                                "14",
                                "-14",
                                "364870",
                                "-364870",
                                "592299531695979194",
                                "-592299531695979194",
                                "243533",
                                "-243533",
                                "228268671797977",
                                "-228268671797977",
                                "150",
                                "-150",
                                "2109092292",
                                "-2109092292",
                                "10814341",
                                "-10814341",
                                "229344736512",
                                "-229344736512",
                                "506659",
                                "-506659",
                                "15065",
                                "-15065",
                                "73012461469893725",
                                "-73012461469893725",
                                "183623698",
                                "-183623698",
                                "30820",
                                "-30820"};

    boost::filesystem::ifstream is(root / "cpp_int64_serial64.txt");
    std::cout << "Testing cpp_int64_serial64.txt with T=" << typeid(T).name() << std::endl;
    // is.peek();
    BOOST_CHECK(is.good());
    // char c = is.peek();
    // std::size_t s;
    // is >> s;
    boost::archive::text_iarchive ia(is);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
        T val;
        ia >> val;
        BOOST_CHECK_EQUAL(val, T(text_array[i]));
    }

    boost::filesystem::ifstream is2(root / "cpp_int64_serial32.txt");
    std::cout << "Testing cpp_int64_serial32.txt with T=" << typeid(T).name() << std::endl;
    // is2.peek();
    BOOST_CHECK(is2.good());
    boost::archive::text_iarchive ia2(is2);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
        T val;
        ia2 >> val;
        BOOST_CHECK_EQUAL(val, T(text_array[i]));
    }
}

template<class T>
void test128() {
    using namespace nil::crypto3::multiprecision;

    const char* text_array[] = {
        "27388486965920179246162874599461",
        "-27388486965920179246162874599461",
        "144684",
        "-144684",
        "40075268927703813213972787292005375",
        "-40075268927703813213972787292005375",
        "185882978840350932616815972016599",
        "-185882978840350932616815972016599",
        "118042",
        "-118042",
        "18836407318976510834104635573348923563",
        "-18836407318976510834104635573348923563",
        "305594372610563985628870243265194313",
        "-305594372610563985628870243265194313",
        "992608567",
        "-992608567",
        "1079802217950896854831728",
        "-1079802217950896854831728",
        "382261429251",
        "-382261429251",
        "7995",
        "-7995",
        "1691954012304306190464",
        "-1691954012304306190464",
        "252558125876",
        "-252558125876",
        "63408135",
        "-63408135",
        "1923885021482774859879",
        "-1923885021482774859879",
        "218151618018868077912122028563473880039",
        "-218151618018868077912122028563473880039",
        "1830482607233486577967554117978261568",
        "-1830482607233486577967554117978261568",
        "232684363792492642717810801641182199046",
        "-232684363792492642717810801641182199046",
        "18951107105103656564987041230801322761",
        "-18951107105103656564987041230801322761",
        "18602001100058210837668227206289280804",
        "-18602001100058210837668227206289280804",
        "619312",
        "-619312",
        "3300635207581175104869860370",
        "-3300635207581175104869860370",
        "35913874076527213864347472731883210240",
        "-35913874076527213864347472731883210240",
        "22584003535744275158325315387889625225",
        "-22584003535744275158325315387889625225",
        "1087569784912004503372385117646999025",
        "-1087569784912004503372385117646999025",
        "53419",
        "-53419",
        "6365946347248672643",
        "-6365946347248672643",
        "923074766928095495451885549346",
        "-923074766928095495451885549346",
        "791386027675064089452885112122",
        "-791386027675064089452885112122",
        "1095850863769",
        "-1095850863769",
        "585462",
        "-585462",
        "7",
        "-7",
        "14396352646034696",
        "-14396352646034696",
        "103513",
        "-103513",
        "236879494739813627852695329647307484",
        "-236879494739813627852695329647307484",
        "833105528657041028703317",
        "-833105528657041028703317",
        "403987552870100762517310706932",
        "-403987552870100762517310706932",
        "9241069445104304081394313010837003",
        "-9241069445104304081394313010837003",
        "7747462702643357490732429745555870341",
        "-7747462702643357490732429745555870341",
        "24325940392988231200",
        "-24325940392988231200",
        "3169332595628505508931977",
        "-3169332595628505508931977",
        "2956433455556566120076606972499",
        "-2956433455556566120076606972499",
        "97",
        "-97",
        "162358208806282",
        "-162358208806282",
        "450940116154946927404473774882465",
        "-450940116154946927404473774882465",
        "451641858",
        "-451641858",
        "1225696755823790187144596188382442861",
        "-1225696755823790187144596188382442861",
        "29784146626131423063590613",
        "-29784146626131423063590613",
        "234254347872215512272431905",
        "-234254347872215512272431905",
        "1188109449997714",
        "-1188109449997714",
        "67931289973154010244863599404",
        "-67931289973154010244863599404",
        "15985550526478899202524298413",
        "-15985550526478899202524298413",
        "44969358144856504665069077764",
        "-44969358144856504665069077764",
        "2433869372731414379",
        "-2433869372731414379",
        "389948478409995",
        "-389948478409995",
        "42980455782580666",
        "-42980455782580666",
        "32377741714896213765436617",
        "-32377741714896213765436617",
        "14147536",
        "-14147536",
        "7281984",
        "-7281984",
        "1940499846845",
        "-1940499846845",
        "431464371512114469628917178",
        "-431464371512114469628917178",
        "7407337220313553496076208494128",
        "-7407337220313553496076208494128",
        "30",
        "-30",
        "1327411295501",
        "-1327411295501",
        "66903469770",
        "-66903469770",
        "1681234517540805320612830262883456",
        "-1681234517540805320612830262883456",
        "100",
        "-100",
        "1619033",
        "-1619033",
        "31778",
        "-31778",
        "157454929543174151967897543014505981946",
        "-157454929543174151967897543014505981946",
        "71577966086399886868276034834304",
        "-71577966086399886868276034834304",
        "39053861540146327519720396203958",
        "-39053861540146327519720396203958",
        "744644565611021440442223814",
        "-744644565611021440442223814",
        "141620",
        "-141620",
        "2207944969567",
        "-2207944969567",
        "203426602629118177589459157758",
        "-203426602629118177589459157758",
        "4687930831049614526662210561259545215",
        "-4687930831049614526662210561259545215",
        "13741620425001328569",
        "-13741620425001328569",
        "28",
        "-28",
        "19919840763987597711639960",
        "-19919840763987597711639960",
        "58845502926990870",
        "-58845502926990870",
        "46503",
        "-46503",
        "227899590091810",
        "-227899590091810",
        "520269641",
        "-520269641",
        "533635134464326491653819104191",
        "-533635134464326491653819104191",
        "32",
        "-32",
        "2311765742988497575052179436185",
        "-2311765742988497575052179436185",
        "104",
        "-104",
        "13174010",
        "-13174010",
        "9157004287034859",
        "-9157004287034859",
        "13439929054075798978",
        "-13439929054075798978",
        "1005710832260650449",
        "-1005710832260650449",
        "45810516546119519",
        "-45810516546119519",
        "10111031832823515595",
        "-10111031832823515595",
        "1556666498630726306813245",
        "-1556666498630726306813245",
        "3776079563026301615061583892830",
        "-3776079563026301615061583892830",
        "3554220000452135447940601650",
        "-3554220000452135447940601650",
        "342914370059615129601458555955512766",
        "-342914370059615129601458555955512766",
        "37211915143242116097464702285",
        "-37211915143242116097464702285",
        "8426589576380612848355737491164",
        "-8426589576380612848355737491164",
        "32989222860",
        "-32989222860",
        "2242563523293104833112476952",
        "-2242563523293104833112476952",
        "26340698264302762867393911",
        "-26340698264302762867393911",
        "7",
        "-7",
        "690707180838394286313288",
        "-690707180838394286313288",
        "4152835666147840816597477625",
        "-4152835666147840816597477625",
        "4307204",
        "-4307204",
        "5538028691958331075031052",
        "-5538028691958331075031052",
        "15605",
        "-15605",
        "779689768131768618",
        "-779689768131768618",
        "31804890425581409493",
        "-31804890425581409493",
        "82342246867680606750756320822",
        "-82342246867680606750756320822",
        "9901401020017005286056280532528545058",
        "-9901401020017005286056280532528545058",
        "23964619045267142735208",
        "-23964619045267142735208",
        "23105481037040",
        "-23105481037040",
        "9261441758156913859636303647639218",
        "-9261441758156913859636303647639218",
        "60070546007507763924924",
        "-60070546007507763924924",
        "12326765403330476150347768542599",
        "-12326765403330476150347768542599",
        "1754723286",
        "-1754723286",
        "28",
        "-28",
        "89432086134972543173032616112",
        "-89432086134972543173032616112",
        "57126030796671809943615335657436",
        "-57126030796671809943615335657436",
        "14251136561",
        "-14251136561",
        "34939118696445841694152507070732",
        "-34939118696445841694152507070732",
        "62242533492272937541",
        "-62242533492272937541",
        "743045397928995080970748460370011005",
        "-743045397928995080970748460370011005",
        "657268729381871210499613874",
        "-657268729381871210499613874",
        "5257773746486582",
        "-5257773746486582",
        "40168363520567402312420813782551098",
        "-40168363520567402312420813782551098",
        "61834553929623600",
        "-61834553929623600",
        "8827879038299859860036523950621910882",
        "-8827879038299859860036523950621910882",
        "18187363614017047925823",
        "-18187363614017047925823",
        "1117818522952984212179",
        "-1117818522952984212179",
        "2656685",
        "-2656685",
        "409037",
        "-409037",
        "184490923222475885977498171480",
        "-184490923222475885977498171480",
        "802095",
        "-802095",
        "1362431392",
        "-1362431392",
        "22261578528",
        "-22261578528",
        "29290981558101942713268861928118",
        "-29290981558101942713268861928118",
        "47302301317848473766508256110200",
        "-47302301317848473766508256110200",
        "148503360374909444835237781907560612329",
        "-148503360374909444835237781907560612329",
        "30589987607",
        "-30589987607",
        "9336827203045",
        "-9336827203045",
        "30107043678267266207220294684045",
        "-30107043678267266207220294684045",
        "1084118892329",
        "-1084118892329",
        "7041095740",
        "-7041095740",
        "15",
        "-15",
        "610704633153562426576938052064937496",
        "-610704633153562426576938052064937496",
        "595347631",
        "-595347631",
        "7667191853556",
        "-7667191853556",
        "44454027936868155101947565993903816",
        "-44454027936868155101947565993903816",
        "85883611",
        "-85883611",
        "360758748839243518516454792370840",
        "-360758748839243518516454792370840",
        "2790927324",
        "-2790927324",
        "3742465736365768915898498156617091585",
        "-3742465736365768915898498156617091585",
        "147479413949146319856130",
        "-147479413949146319856130",
        "1039208893123161146877445631451",
        "-1039208893123161146877445631451",
        "4014354216767740814",
        "-4014354216767740814",
        "119781181099519678732165162824065718973",
        "-119781181099519678732165162824065718973",
        "78562776301070",
        "-78562776301070",
        "559",
        "-559",
        "11280106118161133960100664534446",
        "-11280106118161133960100664534446",
        "4606016388942561437580270830022",
        "-4606016388942561437580270830022",
        "57670561868327441370011",
        "-57670561868327441370011",
        "71416894909097014471844",
        "-71416894909097014471844",
        "3968198792173455589573",
        "-3968198792173455589573",
        "13149823145733642608775252727",
        "-13149823145733642608775252727",
        "264546856712400799367073649733688068",
        "-264546856712400799367073649733688068",
        "181571595840115131057831601",
        "-181571595840115131057831601",
        "137320082754",
        "-137320082754",
        "106737570210691788059038313",
        "-106737570210691788059038313",
        "266197717365288449213562655531",
        "-266197717365288449213562655531",
        "2641672529147341",
        "-2641672529147341",
        "151305657535708132064629059130",
        "-151305657535708132064629059130",
        "8838288455460932557542",
        "-8838288455460932557542",
        "229580992302363",
        "-229580992302363",
        "381276009",
        "-381276009",
        "2189254995814346543537",
        "-2189254995814346543537",
        "241062663892019429783",
        "-241062663892019429783",
        "1289",
        "-1289",
        "3768499169854362",
        "-3768499169854362",
        "46",
        "-46",
        "113123194090149",
        "-113123194090149",
        "257162014338572986111",
        "-257162014338572986111",
        "125826984535179834218224",
        "-125826984535179834218224",
        "380714866068747567944322727593",
        "-380714866068747567944322727593",
        "104303598841139",
        "-104303598841139",
        "1065280345148327648773363223393307192",
        "-1065280345148327648773363223393307192",
        "20248493338789246233167313227932895840",
        "-20248493338789246233167313227932895840",
        "162538",
        "-162538",
        "173739",
        "-173739",
        "5359750034437798426950",
        "-5359750034437798426950",
        "665876738146930",
        "-665876738146930",
        "709289441745698432",
        "-709289441745698432",
        "202728866936448",
        "-202728866936448",
        "6",
        "-6",
        "15800583732744199482624014690",
        "-15800583732744199482624014690",
        "29779074291232",
        "-29779074291232",
        "984339779461760",
        "-984339779461760",
        "767398",
        "-767398",
        "415462781851563431292700828131108380",
        "-415462781851563431292700828131108380",
        "1147933945700269690596156182506",
        "-1147933945700269690596156182506",
        "42450738679031729",
        "-42450738679031729",
        "2577950950157",
        "-2577950950157",
        "2522521710801514347400568661434422",
        "-2522521710801514347400568661434422",
        "13819658998892401541",
        "-13819658998892401541",
        "496658145774859954943564",
        "-496658145774859954943564",
        "518126",
        "-518126",
        "1401",
        "-1401",
        "65673247548918355271934",
        "-65673247548918355271934",
        "1902619525684055188",
        "-1902619525684055188",
        "32325262934",
        "-32325262934",
        "768343207102",
        "-768343207102",
        "7717131697976593508998559",
        "-7717131697976593508998559",
        "318668224221205716681",
        "-318668224221205716681",
        "373695949349041942234118586",
        "-373695949349041942234118586",
        "2374230638947377832537387112",
        "-2374230638947377832537387112",
        "38727149332417950712342749093",
        "-38727149332417950712342749093",
        "50641097967663747879422486643603294439",
        "-50641097967663747879422486643603294439",
        "155679557293775199",
        "-155679557293775199",
        "9584524694361179551000251851",
        "-9584524694361179551000251851",
        "1555",
        "-1555",
        "153598430081275298827470966254180164",
        "-153598430081275298827470966254180164",
        "1792977580",
        "-1792977580",
        "40513995299101921791",
        "-40513995299101921791",
        "205149194684558953622782831493255495",
        "-205149194684558953622782831493255495",
        "8569592230593344920443",
        "-8569592230593344920443",
        "508895",
        "-508895",
        "19768102480409470254",
        "-19768102480409470254",
        "137276814223629775094893592279819",
        "-137276814223629775094893592279819",
        "294000609851122741",
        "-294000609851122741",
        "65049209437230122275",
        "-65049209437230122275",
        "23362940999728532813",
        "-23362940999728532813",
        "88836918597358775734007849873044275046",
        "-88836918597358775734007849873044275046",
        "434035006963316670",
        "-434035006963316670",
        "622",
        "-622",
        "581347029549389573249184843256799",
        "-581347029549389573249184843256799",
        "180338559687589565",
        "-180338559687589565",
        "561053757585637776917747",
        "-561053757585637776917747",
        "32239",
        "-32239",
        "33901075413575967103",
        "-33901075413575967103",
        "8932885164594123487128517542485517028",
        "-8932885164594123487128517542485517028",
        "83521148713289418108751633969571232369",
        "-83521148713289418108751633969571232369",
        "7",
        "-7",
        "97",
        "-97",
        "148574175322938930280707441746",
        "-148574175322938930280707441746",
        "34819851973902418549646788688822516665",
        "-34819851973902418549646788688822516665",
        "8315372482034321202893445528412",
        "-8315372482034321202893445528412",
        "78070260632520",
        "-78070260632520",
        "1694579890551276986736768820881486",
        "-1694579890551276986736768820881486",
        "148949594888574520284515061",
        "-148949594888574520284515061",
        "7155",
        "-7155",
        "54025120576002",
        "-54025120576002",
        "6486075462638233",
        "-6486075462638233",
        "381736014892858568664127676041586",
        "-381736014892858568664127676041586",
        "20417033368",
        "-20417033368",
        "129",
        "-129",
        "4369312912082114047863415327506",
        "-4369312912082114047863415327506",
        "3425863567263779336359928",
        "-3425863567263779336359928",
        "126664685306324611",
        "-126664685306324611",
        "79290635423234192686030222410",
        "-79290635423234192686030222410",
        "89904040753844842469288403271470296",
        "-89904040753844842469288403271470296",
        "303078",
        "-303078",
        "24403696",
        "-24403696",
        "71519894287768242731407528483177175738",
        "-71519894287768242731407528483177175738",
        "43562121429",
        "-43562121429",
        "27030",
        "-27030",
        "24600",
        "-24600",
        "248387716733",
        "-248387716733",
        "371528",
        "-371528",
        "4787877250361840261744279869821",
        "-4787877250361840261744279869821",
        "4997511746500297909058528782721320",
        "-4997511746500297909058528782721320",
        "1586",
        "-1586",
        "31554014671157226899246",
        "-31554014671157226899246",
        "2859985988700258455304314",
        "-2859985988700258455304314",
        "4509508709806307404851",
        "-4509508709806307404851",
        "9",
        "-9",
        "1637744",
        "-1637744",
        "12479552255352789077760938",
        "-12479552255352789077760938",
        "976489633596851129859012248183437",
        "-976489633596851129859012248183437",
        "851806998881827048562",
        "-851806998881827048562",
        "906771089783845862955091",
        "-906771089783845862955091",
        "80038352079069729",
        "-80038352079069729",
        "17388136706500",
        "-17388136706500",
        "61145989",
        "-61145989",
        "94774844620540266019",
        "-94774844620540266019",
        "408281",
        "-408281",
        "952903032817435",
        "-952903032817435",
        "1631092620569808",
        "-1631092620569808",
        "2138",
        "-2138",
        "212824926871186875960728065608",
        "-212824926871186875960728065608",
        "4268162925",
        "-4268162925",
        "36",
        "-36",
        "223723",
        "-223723",
        "16415665053",
        "-16415665053",
        "25788643",
        "-25788643",
        "70220421074486178069",
        "-70220421074486178069",
        "4575797377",
        "-4575797377",
        "76884751129407965501107148587666",
        "-76884751129407965501107148587666",
        "29088346935783207",
        "-29088346935783207",
        "45914004714587007155631909758206960989",
        "-45914004714587007155631909758206960989",
        "248",
        "-248",
        "5579572272102752655174722938686",
        "-5579572272102752655174722938686",
        "30175831892260274369581289965353458",
        "-30175831892260274369581289965353458",
        "1237805257371",
        "-1237805257371",
        "4843618316827222290521953980935538236",
        "-4843618316827222290521953980935538236",
        "240",
        "-240",
        "15807477184070179658",
        "-15807477184070179658",
        "4142567393",
        "-4142567393",
        "12811809209743734075",
        "-12811809209743734075",
        "1485630615919152225304",
        "-1485630615919152225304",
        "7910273036167",
        "-7910273036167",
        "8463758727276424785250829495444564",
        "-8463758727276424785250829495444564",
        "64731869997654405671780238192304416",
        "-64731869997654405671780238192304416",
        "23615438174870",
        "-23615438174870",
        "352157140910141",
        "-352157140910141",
        "5",
        "-5",
        "59221",
        "-59221",
        "2569479",
        "-2569479",
        "542857439184063766884246909368",
        "-542857439184063766884246909368",
        "1823313067549638501383110895210828",
        "-1823313067549638501383110895210828",
        "3270724720703321",
        "-3270724720703321",
        "301251143",
        "-301251143",
        "2479800639",
        "-2479800639",
        "91698905921",
        "-91698905921",
        "2871719453817880",
        "-2871719453817880",
        "15334399950643828095",
        "-15334399950643828095",
        "5526",
        "-5526",
        "233477156",
        "-233477156",
        "133654",
        "-133654",
        "16379095557010108528",
        "-16379095557010108528",
        "781428672272181160786182179076882317",
        "-781428672272181160786182179076882317",
        "8296349327720787412560043280221269761",
        "-8296349327720787412560043280221269761",
        "10281035380942381640132947771350381026",
        "-10281035380942381640132947771350381026",
        "21040070113550157615461288",
        "-21040070113550157615461288",
        "25742884982404545443527",
        "-25742884982404545443527",
        "32454973901024441799985592013",
        "-32454973901024441799985592013",
        "743",
        "-743",
        "48093509516189552",
        "-48093509516189552",
        "3310081024",
        "-3310081024",
        "555885664598428773514",
        "-555885664598428773514",
        "12816465810736",
        "-12816465810736",
        "318",
        "-318",
        "11177674634623001920713776522758",
        "-11177674634623001920713776522758",
        "4478260629000",
        "-4478260629000",
        "7",
        "-7",
        "16047003680147439",
        "-16047003680147439",
        "183",
        "-183",
        "59147119480091828181670682607031985",
        "-59147119480091828181670682607031985",
        "14760016",
        "-14760016",
        "6274417502047620562218369346380",
        "-6274417502047620562218369346380",
        "14026544807038936634796795",
        "-14026544807038936634796795",
        "17158839999",
        "-17158839999",
        "15548352769483287520249305142",
        "-15548352769483287520249305142",
        "362163",
        "-362163",
        "3476850886273368477018353",
        "-3476850886273368477018353",
        "12190143908040407488",
        "-12190143908040407488",
        "521525508150081044",
        "-521525508150081044",
        "433309060522200",
        "-433309060522200",
        "2165455650813681324517",
        "-2165455650813681324517",
        "6819348098387524497126647285",
        "-6819348098387524497126647285",
        "464251630203",
        "-464251630203",
        "145993167313",
        "-145993167313",
        "23955493117052698447116654044",
        "-23955493117052698447116654044",
        "1249962737542647752328381",
        "-1249962737542647752328381",
        "25985762",
        "-25985762",
        "8825811397396758414408048174991",
        "-8825811397396758414408048174991",
        "456322584656453621447742298",
        "-456322584656453621447742298",
        "3635296824314",
        "-3635296824314",
        "48071792",
        "-48071792",
        "573327609505513",
        "-573327609505513",
        "32947066161183",
        "-32947066161183",
        "3572119014464",
        "-3572119014464",
        "339951878200713991932774",
        "-339951878200713991932774",
        "9829263561931267281756747918204",
        "-9829263561931267281756747918204",
        "99133551353390277845579505558",
        "-99133551353390277845579505558",
        "87647698384969946179713959",
        "-87647698384969946179713959",
        "812",
        "-812",
        "874259982778101",
        "-874259982778101",
        "427106308211321596930989851275848063",
        "-427106308211321596930989851275848063",
        "182604408166381257",
        "-182604408166381257",
        "1027122202590661838104329309513",
        "-1027122202590661838104329309513",
        "1354315694936",
        "-1354315694936",
        "6079470672663034486",
        "-6079470672663034486",
        "141187763548195492188625309258190962",
        "-141187763548195492188625309258190962",
        "5948423816691427",
        "-5948423816691427",
        "3790826071191932816",
        "-3790826071191932816",
        "475187449013755049",
        "-475187449013755049",
        "134916830618137216019136180544",
        "-134916830618137216019136180544",
        "289548281081",
        "-289548281081",
        "56088",
        "-56088",
        "71309468310269123716",
        "-71309468310269123716",
        "4319226187100950",
        "-4319226187100950",
        "64155929243330777086",
        "-64155929243330777086",
        "1346606607492942300949980881912922",
        "-1346606607492942300949980881912922",
        "56691962171349121239043134503543",
        "-56691962171349121239043134503543",
        "179884054884043",
        "-179884054884043",
        "1457175629136147646463304750253",
        "-1457175629136147646463304750253",
        "298847019807831033427383443102915235",
        "-298847019807831033427383443102915235",
        "3724333984635632125440253",
        "-3724333984635632125440253",
        "75997801235764509433",
        "-75997801235764509433",
        "624924035973776",
        "-624924035973776",
        "663853",
        "-663853",
        "39794266307878236329712249281466",
        "-39794266307878236329712249281466",
        "68236356",
        "-68236356",
        "874551267305634766833",
        "-874551267305634766833",
        "3069873585346853407835416677633253152",
        "-3069873585346853407835416677633253152",
        "128022182325463",
        "-128022182325463",
        "102685407245351562527197662841526650696",
        "-102685407245351562527197662841526650696",
        "1268696403523315749290280644252872285",
        "-1268696403523315749290280644252872285",
        "962551179",
        "-962551179",
        "5397346809016967977013332103668812",
        "-5397346809016967977013332103668812",
        "19",
        "-19",
        "1383556287038543763721",
        "-1383556287038543763721",
        "596132342851497",
        "-596132342851497",
        "386032274487026935724854",
        "-386032274487026935724854",
        "913487342891468949707909122983",
        "-913487342891468949707909122983",
        "60948098701787507435146",
        "-60948098701787507435146",
        "2022832067596000203",
        "-2022832067596000203",
        "25656479",
        "-25656479",
        "2346119770800025007571",
        "-2346119770800025007571",
        "376371975341",
        "-376371975341",
        "9",
        "-9",
        "2942356530044344965",
        "-2942356530044344965",
        "3932381905103911287794534670998227",
        "-3932381905103911287794534670998227",
        "3218056320",
        "-3218056320",
        "102738821",
        "-102738821",
        "234572888397008437041293767052858",
        "-234572888397008437041293767052858",
        "5858001549782605027037905592031557",
        "-5858001549782605027037905592031557",
        "90718950",
        "-90718950",
        "39428225166028193",
        "-39428225166028193",
        "1383746282",
        "-1383746282",
        "915121",
        "-915121",
        "8970289",
        "-8970289",
        "4322641789",
        "-4322641789",
        "260209037",
        "-260209037",
        "6609227084602664174553003642710",
        "-6609227084602664174553003642710",
        "37231518369001507",
        "-37231518369001507",
        "4301528568595403190",
        "-4301528568595403190",
        "2333077100212",
        "-2333077100212",
        "11565",
        "-11565",
        "255726621336514413017008354182674709",
        "-255726621336514413017008354182674709",
        "17395422733913073065750181",
        "-17395422733913073065750181",
        "125019234224449492",
        "-125019234224449492",
        "4740360722276299853297125",
        "-4740360722276299853297125",
        "7568347",
        "-7568347",
        "17122026961016863428287",
        "-17122026961016863428287",
        "112577394987931131505768113032531171",
        "-112577394987931131505768113032531171",
        "7046212555452856822490707564",
        "-7046212555452856822490707564",
        "33256103762317100748101545285090311772",
        "-33256103762317100748101545285090311772",
        "104639691131091",
        "-104639691131091",
        "74043463548796243",
        "-74043463548796243",
        "49942702457067622169669481",
        "-49942702457067622169669481",
        "12806",
        "-12806",
        "4194227136755752775246633399",
        "-4194227136755752775246633399",
        "22363149786",
        "-22363149786",
        "53844",
        "-53844",
        "6204108132585699",
        "-6204108132585699",
        "133987",
        "-133987",
        "47357030709179941308475",
        "-47357030709179941308475",
        "167735124254221045",
        "-167735124254221045",
        "58394613871",
        "-58394613871",
        "214",
        "-214",
        "97085709128533841718123",
        "-97085709128533841718123",
        "9049249133086876221572990732831",
        "-9049249133086876221572990732831",
        "1860834869623152381150863486",
        "-1860834869623152381150863486",
        "3868776",
        "-3868776",
        "714752211",
        "-714752211",
        "117044601375672047600456567336894",
        "-117044601375672047600456567336894",
        "38202",
        "-38202",
        "1706135867048",
        "-1706135867048",
        "568201454130",
        "-568201454130",
        "10071543790040355676774628",
        "-10071543790040355676774628",
        "3955606956905",
        "-3955606956905",
        "1710822834542941",
        "-1710822834542941",
        "28185453895207483",
        "-28185453895207483",
        "2241403707806732425937134125743",
        "-2241403707806732425937134125743",
        "24424908461669836348",
        "-24424908461669836348",
        "39965",
        "-39965",
        "5776",
        "-5776",
        "161984235115107451958835599550261843326",
        "-161984235115107451958835599550261843326",
        "29821471341",
        "-29821471341",
        "3087720",
        "-3087720",
        "234408055908870511236228564329",
        "-234408055908870511236228564329",
        "367687929171771055426419375659",
        "-367687929171771055426419375659",
        "31",
        "-31",
        "14038375921",
        "-14038375921",
        "1272562766857183500104765994611086188",
        "-1272562766857183500104765994611086188",
        "5395131009",
        "-5395131009",
        "34630426722601695384252351222",
        "-34630426722601695384252351222",
        "16553",
        "-16553",
        "11084856402443484655",
        "-11084856402443484655",
        "4497048086787",
        "-4497048086787",
        "32568631422747274845485",
        "-32568631422747274845485",
        "262201867566",
        "-262201867566",
        "3603196342",
        "-3603196342",
        "32228667062769096924274427075075163477",
        "-32228667062769096924274427075075163477",
        "693196875773858622",
        "-693196875773858622",
        "375838207",
        "-375838207",
    };

    boost::filesystem::ifstream is(root / "cpp_int128_serial64.txt");
    std::cout << "Testing cpp_int128_serial64.txt with T=" << typeid(T).name() << std::endl;
    // is.peek();
    BOOST_CHECK(is.good());
    boost::archive::text_iarchive ia(is);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
#ifndef BOOST_NO_EXCEPTIONS
        try {
#endif
            T val;
            ia >> val;
            BOOST_CHECK_EQUAL(val, T(text_array[i]));
#ifndef BOOST_NO_EXCEPTIONS
        } catch (const boost::exception& e) {
            std::cout << "Caught boost::exception with:\n";
            std::cout << diagnostic_information(e);
        } catch (const std::exception& e) {
            std::cout << "Caught std::exception with:\n";
            std::cout << e.what() << std::endl;
        }
#endif
    }

    boost::filesystem::ifstream is2(root / "cpp_int128_serial32.txt");
    std::cout << "Testing cpp_int128_serial32.txt with T=" << typeid(T).name() << std::endl;
    // is2.peek();
    BOOST_CHECK(is2.good());
    boost::archive::text_iarchive ia2(is2);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
#ifndef BOOST_NO_EXCEPTIONS
        try {
#endif
            T val;
            ia2 >> val;
            BOOST_CHECK_EQUAL(val, T(text_array[i]));
#ifndef BOOST_NO_EXCEPTIONS
        } catch (const boost::exception& e) {
            std::cout << "Caught boost::exception with:\n";
            std::cout << diagnostic_information(e);
        } catch (const std::exception& e) {
            std::cout << "Caught std::exception with:\n";
            std::cout << e.what() << std::endl;
        }
#endif
    }
}

template<class T>
void test1024() {
    using namespace nil::crypto3::multiprecision;

    const char* text_array[] = {
        "19911659252469564208530218429153497210482110349684628834904970274345548842375686523353469779379956980286667098"
        "16623569042709885443090726486919834590240634687088491638585583004442604954326558805043711863040072060976858338"
        "70163932928823469130199562442992",
        "-1991165925246956420853021842915349721048211034968462883490497027434554884237568652335346977937995698028666709"
        "81662356904270988544309072648691983459024063468708849163858558300444260495432655880504371186304007206097685833"
        "870163932928823469130199562442992",
        "900593985907599133309438051698408853499625",
        "-900593985907599133309438051698408853499625",
        "19998745291339187069849955334067590762865656129208726351554161625040471962835132266248042246642154511037874106"
        "46351770677862238993331622942206185777454355265435238628326337253875004975201674224657309748975788962678417182"
        "798452737039836018579998386385843839364431684621083773420995",
        "-1999874529133918706984995533406759076286565612920872635155416162504047196283513226624804224664215451103787410"
        "64635177067786223899333162294220618577745435526543523862832633725387500497520167422465730974897578896267841718"
        "2798452737039836018579998386385843839364431684621083773420995",
        "39846229177248945339970062161545632119073614599103189730904571151677402837710414688340301358797764669115647844"
        "36671674308756100400008317797390250537451443539509892669634431827675333761787371583170220547281395030543315815"
        "109821053621124047969069733480692532",
        "-3984622917724894533997006216154563211907361459910318973090457115167740283771041468834030135879776466911564784"
        "43667167430875610040000831779739025053745144353950989266963443182767533376178737158317022054728139503054331581"
        "5109821053621124047969069733480692532",
        "3232318919913083002600961037970380935109",
        "-3232318919913083002600961037970380935109",
        "31063287987662242043295268121189412701158946907681323476663158129071217086758046387444487305432940821201595312"
        "00109188844003853773901218087159152936176611202912181969006700410215018622275789957656765071285078769009818201"
        "9345491656562683693940513570929164008316791512277994247388861874767036310283032",
        "-3106328798766224204329526812118941270115894690768132347666315812907121708675804638744448730543294082120159531"
        "20010918884400385377390121808715915293617661120291218196900670041021501862227578995765676507128507876900981820"
        "19345491656562683693940513570929164008316791512277994247388861874767036310283032",
        "55189169944887373100541091725166227431440581582959442976819633153990461816478004399671548072088210993389363897"
        "64911029373068420564595646123668977772503595188856116995529407262611110661376610971667081992162295087736922031"
        "74236076409923801944639195246263554709054412966237162836449108",
        "-5518916994488737310054109172516622743144058158295944297681963315399046181647800439967154807208821099338936389"
        "76491102937306842056459564612366897777250359518885611699552940726261111066137661097166708199216229508773692203"
        "174236076409923801944639195246263554709054412966237162836449108",
        "335366696367917734077308183957523963605452915968160245855756922088011",
        "-335366696367917734077308183957523963605452915968160245855756922088011",
        "51674758683531399342574220203894174339118440195487080107375070237167255546104594892725587144902548503753518189"
        "5965683819085832663856528858925035833888106053116851498798112586463619731478072279623",
        "-5167475868353139934257422020389417433911844019548708010737507023716725554610459489272558714490254850375351818"
        "95965683819085832663856528858925035833888106053116851498798112586463619731478072279623",
        "266698476906140000185555171296233707414383217616977634049828438937252114299738535337312010987594",
        "-266698476906140000185555171296233707414383217616977634049828438937252114299738535337312010987594",
        "1742740128166122778815789893503",
        "-1742740128166122778815789893503",
        "97241781863507318828621218123711547961474962274325852505325131440710774063669374932210940466382068622611421651"
        "56227060439590867019554905722401562859987295808994814401942",
        "-9724178186350731882862121812371154796147496227432585250532513144071077406366937493221094046638206862261142165"
        "156227060439590867019554905722401562859987295808994814401942",
        "78669120642064259414462176059292690866387576703089703385165678245138348243792107699164",
        "-78669120642064259414462176059292690866387576703089703385165678245138348243792107699164",
        "20818242466417733255855534640058104588616172091806661117670",
        "-20818242466417733255855534640058104588616172091806661117670",
        "42857953022571420232795575952653526191535504438503660916910137015731168767594695345010536404529485484282086573"
        "12557380072256478428969426137868124810140942586250078976271",
        "-4285795302257142023279557595265352619153550443850366091691013701573116876759469534501053640452948548428208657"
        "312557380072256478428969426137868124810140942586250078976271",
        "58260400006257280492375789213042628709373594471340574617261013914240750080188866200803622064193672042104173745"
        "41017989280201950702072487431080487517318099245634844187939058137669328713062629954842195217669246107298039728"
        "58084042961494083239630079092513694133586118612073236719306830956983397633251414977754",
        "-5826040000625728049237578921304262870937359447134057461726101391424075008018886620080362206419367204210417374"
        "54101798928020195070207248743108048751731809924563484418793905813766932871306262995484219521766924610729803972"
        "858084042961494083239630079092513694133586118612073236719306830956983397633251414977754",
        "15244715246682897475794438496539784661328456725495852276384174914973848673559621029178770197754207946620279120"
        "76693118091795563176355586391355451312377530464710255340101829294881811237952173223301887499132318688713228658"
        "6138108436833252904592044083624364585617172057137372527454560587256796482346",
        "-1524471524668289747579443849653978466132845672549585227638417491497384867355962102917877019775420794662027912"
        "07669311809179556317635558639135545131237753046471025534010182929488181123795217322330188749913231868871322865"
        "86138108436833252904592044083624364585617172057137372527454560587256796482346",
        "21628952514697363941553737492988704910190428104689370071142391148349654343245323724770434507714641350640452676"
        "65496385710799863273304844467062688237563757141742551576106360777697871874341148850361709074093167368004234386"
        "954371485929893986000482110508651966963502456247924228172005161782355542551339301544053",
        "-2162895251469736394155373749298870491019042810468937007114239114834965434324532372477043450771464135064045267"
        "66549638571079986327330484446706268823756375714174255157610636077769787187434114885036170907409316736800423438"
        "6954371485929893986000482110508651966963502456247924228172005161782355542551339301544053",
        "15989794200513732137790671024288258572589607530770319105108375478661173406909380153985889756724371633476169664"
        "44506118889316096334851198017036793976867532695462600493286904022181865571035930456030653116939922200581824528"
        "814030699118802949188745959300411809512397337408237271478944565611123755566305",
        "-1598979420051373213779067102428825857258960753077031910510837547866117340690938015398588975672437163347616966"
        "44450611888931609633485119801703679397686753269546260049328690402218186557103593045603065311693992220058182452"
        "8814030699118802949188745959300411809512397337408237271478944565611123755566305",
        "16972265575362228409871949532650408574482631199000565615577589612763707133618421955651468786564593364791708076"
        "16103959204183156832162151095710562878746877994857996992817593843689690431040255425550404213550736756104940955"
        "3354413837219069382497010795375231533129182910408442845936728120354915635936898",
        "-1697226557536222840987194953265040857448263119900056561557758961276370713361842195565146878656459336479170807"
        "61610395920418315683216215109571056287874687799485799699281759384368969043104025542555040421355073675610494095"
        "53354413837219069382497010795375231533129182910408442845936728120354915635936898",
        "6578842255326490592104075020940649831283616551660",
        "-6578842255326490592104075020940649831283616551660",
        "21683239365736925204171059844091235529220850759783534345105279221261364632686763920546656745741380892718845596"
        "04930527783409332783669955179012815329002647315469408859403314647269726559375634062957131483153618783549787999"
        "2488",
        "-2168323936573692520417105984409123552922085075978353434510527922126136463268676392054665674574138089271884559"
        "60493052778340933278366995517901281532900264731546940885940331464726972655937563406295713148315361878354978799"
        "92488",
        "82705023096235991529043144815694768432078642064433253929157769869969882959684824083733064475507849892985247689"
        "49525446230255788698977849931276264023334826802364807913959017863369909274519163384143179723010398180038801996"
        "1016410936969661694491101422518397720383375579079432440889617406834440612316345",
        "-8270502309623599152904314481569476843207864206443325392915776986996988295968482408373306447550784989298524768"
        "94952544623025578869897784993127626402333482680236480791395901786336990927451916338414317972301039818003880199"
        "61016410936969661694491101422518397720383375579079432440889617406834440612316345",
        "18222684782168983970226991706330148327460192815424089449705127259007001587157346261233090864444607014431087676"
        "96171826371344798595188703012651038241489557314732196223776359303805009650739934717685646175733329897968174888"
        "09960475386339256946590978228792909775228312826022751099327081513175259103822462404",
        "-1822268478216898397022699170633014832746019281542408944970512725900700158715734626123309086444460701443108767"
        "69617182637134479859518870301265103824148955731473219622377635930380500965073993471768564617573332989796817488"
        "809960475386339256946590978228792909775228312826022751099327081513175259103822462404",
        "50478154962861926318751361214829616848543451433756443716558575411290612225852904692833267796823115199278967767"
        "54142231238721306654582346292285270137340078762804088754913299932236143865279819208519978638432654788640663782"
        "736369734346995034407838300134017424349501474133378173964391719130592921725",
        "-5047815496286192631875136121482961684854345143375644371655857541129061222585290469283326779682311519927896776"
        "75414223123872130665458234629228527013734007876280408875491329993223614386527981920851997863843265478864066378"
        "2736369734346995034407838300134017424349501474133378173964391719130592921725",
        "22536736652558441743601984420319740",
        "-22536736652558441743601984420319740",
        "32744753957927043829270482844180752823352260616318888815410535448848337454103770078558071034709316924056859479"
        "9687437260325328617564586900214241043337",
        "-3274475395792704382927048284418075282335226061631888881541053544884833745410377007855807103470931692405685947"
        "99687437260325328617564586900214241043337",
        "57697974189686952754642547012479771423102002875235635633322577598332187115785712952006701838968911013911227580"
        "54499550447709782966508768833614299764302214479826280492544453857860135073108505180036979842378663361009529126"
        "45415854388908568224414707",
        "-5769797418968695275464254701247977142310200287523563563332257759833218711578571295200670183896891101391122758"
        "05449955044770978296650876883361429976430221447982628049254445385786013507310850518003697984237866336100952912"
        "645415854388908568224414707",
        "75570850844040222586349815583359626819093433961650165373391306697275200931864733936414110960478023501847456911"
        "48849224959293982886561711920740040713724240045891379262205372554297178980465205717961475076164083708368070000"
        "16827363741604261172604190",
        "-7557085084404022258634981558335962681909343396165016537339130669727520093186473393641411096047802350184745691"
        "14884922495929398288656171192074004071372424004589137926220537255429717898046520571796147507616408370836807000"
        "016827363741604261172604190",
        "28048724901616569597172899970128263950954786552499389660847160202213362969018987235256727605",
        "-28048724901616569597172899970128263950954786552499389660847160202213362969018987235256727605",
        "173167043910755577166191737374818499849624950",
        "-173167043910755577166191737374818499849624950",
        "48",
        "-48",
        "18463009925253820920449684292621801312807473363997541122773157125946854399091765241363833326106601909427978296"
        "931833223183788301543",
        "-1846300992525382092044968429262180131280747336399754112277315712594685439909176524136383332610660190942797829"
        "6931833223183788301543",
        "31164619961775222493397145731379707",
        "-31164619961775222493397145731379707",
        "18160965707868004558982999614832949498153775331702082825533872794977849996721543648316319335418554250711022664"
        "26105906939977630773287626616160771806315066360322795263086589842632991562964241768039371149116395673886243340"
        "566387264938743398973079853460222114803451321466708714785006727",
        "-1816096570786800455898299961483294949815377533170208282553387279497784999672154364831631933541855425071102266"
        "42610590693997763077328762661616077180631506636032279526308658984263299156296424176803937114911639567388624334"
        "0566387264938743398973079853460222114803451321466708714785006727",
        "28600600722765814019958488778981618945134988650799335502229717389521404020890564329836557036544149992260575996"
        "4419143497079708873231260957597650186760056343574600947950687835678669676590667783184666",
        "-2860060072276581401995848877898161894513498865079933550222971738952140402089056432983655703654414999226057599"
        "64419143497079708873231260957597650186760056343574600947950687835678669676590667783184666",
        "18358404935882372210070601728050732884947257854425817110955248936260198050228809460271322586740505320746909919"
        "91867962710069509743353440920210841648125941633856020999944001955856955216439562492348932932341139973828055285"
        "3025588689733098861097523",
        "-1835840493588237221007060172805073288494725785442581711095524893626019805022880946027132258674050532074690991"
        "99186796271006950974335344092021084164812594163385602099994400195585695521643956249234893293234113997382805528"
        "53025588689733098861097523",
        "41347224553193452149405999806317943466573328707553590104554521556265942690088145011804845098795739675658904652"
        "26873255542092192607602138135728673418643645201766135430371744351074472506612976620427027592918016747144700651"
        "239945277040717933887512645490432181939225775342965",
        "-4134722455319345214940599980631794346657332870755359010455452155626594269008814501180484509879573967565890465"
        "22687325554209219260760213813572867341864364520176613543037174435107447250661297662042702759291801674714470065"
        "1239945277040717933887512645490432181939225775342965",
        "54920807074733793884577529077249631831162657302693894027178095216669108940322624411834499900757281913727092273"
        "51026424821592827328788417946337885356533187770163858502048986628436182933325771080710602305240489765229709271"
        "4031250456279772808462426750654556160069174238558295987347555132735561420095",
        "-5492080707473379388457752907724963183116265730269389402717809521666910894032262441183449990075728191372709227"
        "35102642482159282732878841794633788535653318777016385850204898662843618293332577108071060230524048976522970927"
        "14031250456279772808462426750654556160069174238558295987347555132735561420095",
        "39926556019779425240161716758085008528222079417321671409325356400698647597164514536667232352868028951050422385"
        "6530994241334812625576574784650620927403732184",
        "-3992655601977942524016171675808500852822207941732167140932535640069864759716451453666723235286802895105042238"
        "56530994241334812625576574784650620927403732184",
        "31621966437344909804014117858935966136505781977117316516659445266533686603282356943749115958158394083237531612"
        "132476116831423261618528802877894233115470068483988764082981116838784931515017818535550110918",
        "-3162196643734490980401411785893596613650578197711731651665944526653368660328235694374911595815839408323753161"
        "2132476116831423261618528802877894233115470068483988764082981116838784931515017818535550110918",
        "16069852155484097165033625384447618805432012133996185357310272892651565791773366218071200779498660988028134136"
        "15868269176538634784089984273973440941833767736805385007543715097934592673987261460898859324638806817938705575"
        "451364443949120235151257544",
        "-1606985215548409716503362538444761880543201213399618535731027289265156579177336621807120077949866098802813413"
        "61586826917653863478408998427397344094183376773680538500754371509793459267398726146089885932463880681793870557"
        "5451364443949120235151257544",
        "285683190193",
        "-285683190193",
        "80616978875832664653109736598263475970975589724489014854535246109179520847390668596390847155217102109735961659"
        "21",
        "-8061697887583266465310973659826347597097558972448901485453524610917952084739066859639084715521710210973596165"
        "921",
        "62192232897879099650981725280339144280254263449313650482406101348469300877084863822245269423503641174130204614"
        "82722657384885935391455080562169318712277658961972965925941924792948343565934378704158420349097774074011993945"
        "850670748056251470218258676908828627471885",
        "-6219223289787909965098172528033914428025426344931365048240610134846930087708486382224526942350364117413020461"
        "48272265738488593539145508056216931871227765896197296592594192479294834356593437870415842034909777407401199394"
        "5850670748056251470218258676908828627471885",
        "697258758163542187076749918900636966609908531786609361940000240519",
        "-697258758163542187076749918900636966609908531786609361940000240519",
        "10460980846578311118181753258874221750231621185048734359099524524948523745718088101762430625153130472154710298"
        "84493246457829292480590847793716267629027995295229796393654811459791589585169546388254745922345946744655803804"
        "613032804268083425871981695717315478983498539611218241664930157839795",
        "-1046098084657831111818175325887422175023162118504873435909952452494852374571808810176243062515313047215471029"
        "88449324645782929248059084779371626762902799529522979639365481145979158958516954638825474592234594674465580380"
        "4613032804268083425871981695717315478983498539611218241664930157839795",
        "24844343663800990431562998691696613457415584495317666812264787818133419823386344644991461349401197277358183986"
        "67362505498484418919464161091166892386016324225384189876252889149071097656823108497551033588357003722",
        "-2484434366380099043156299869169661345741558449531766681226478781813341982338634464499146134940119727735818398"
        "667362505498484418919464161091166892386016324225384189876252889149071097656823108497551033588357003722",
        "30828667630819319703141004374267629232859174521348164473389724947437349652253307273843844993981575024889892288"
        "5290011346375849968712988888608255565930075126704466104946675008196710396726585487442780152614905677",
        "-3082866763081931970314100437426762923285917452134816447338972494743734965225330727384384499398157502488989228"
        "85290011346375849968712988888608255565930075126704466104946675008196710396726585487442780152614905677",
        "15787291461925401237861635373480044007509168784953816480153623085555649571469757943927522846855008282458093939"
        "02172165166570",
        "-1578729146192540123786163537348004400750916878495381648015362308555564957146975794392752284685500828245809393"
        "902172165166570",
        "75363519301765498156111258587775643392694633845353651383314493355607726239579342949603038148204373156000614512"
        "21484177660087780641516548983726172083491387643632803717787035263069296692858070190150870566334798939593667099"
        "41765720251266",
        "-7536351930176549815611125858777564339269463384535365138331449335560772623957934294960303814820437315600061451"
        "22148417766008778064151654898372617208349138764363280371778703526306929669285807019015087056633479893959366709"
        "941765720251266",
        "10230567964943402030377403975572373638448111926838302787492941661217076580526545993054853685303008190529876878"
        "26810994785603794931372101763295285975973124930171986523205085256147491724466952116413750593896486505408297359"
        "237231028",
        "-1023056796494340203037740397557237363844811192683830278749294166121707658052654599305485368530300819052987687"
        "82681099478560379493137210176329528597597312493017198652320508525614749172446695211641375059389648650540829735"
        "9237231028",
        "72793689552348412379896896299145619209620024313106863818733142225686401234792871557392765469237641903254429240"
        "90937031964044572030997024902955450149096922769606827151526955803170246823486172000556133026264782831784752812"
        "128580068",
        "-7279368955234841237989689629914561920962002431310686381873314222568640123479287155739276546923764190325442924"
        "09093703196404457203099702490295545014909692276960682715152695580317024682348617200055613302626478283178475281"
        "2128580068",
        "42461738057630911624180745864869274445038655721286876366911307511447757877887284157452773208120749243183187031"
        "1301491048670446826911900920994644694",
        "-4246173805763091162418074586486927444503865572128687636691130751144775787788728415745277320812074924318318703"
        "11301491048670446826911900920994644694",
        "70466860031271190930994769615624274440386113474864142177520948604171907977740767234077135858723079446428248789"
        "64077822345",
        "-7046686003127119093099476961562427444038611347486414217752094860417190797774076723407713585872307944642824878"
        "964077822345",
        "19949119701600514825288852843654302777880460105733015351003691242645123465142555331932685718332487926262997425"
        "529449487067278953683",
        "-1994911970160051482528885284365430277788046010573301535100369124264512346514255533193268571833248792626299742"
        "5529449487067278953683",
        "16469140092633375339743693580164888653727421730589027379476942842394844761208703483677054585417793177811566576"
        "822391363212778421263249183342676114446881502895872964885316569671443951931393367071689754985",
        "-1646914009263337533974369358016488865372742173058902737947694284239484476120870348367705458541779317781156657"
        "6822391363212778421263249183342676114446881502895872964885316569671443951931393367071689754985",
        "1061702816480363701187846694728343109042150409401045998",
        "-1061702816480363701187846694728343109042150409401045998",
        "7391047600385760425390763210856013417540808412389899",
        "-7391047600385760425390763210856013417540808412389899",
        "3720217478561502591416009227591582869882982470098168796813426264578076670286029029195560760567",
        "-3720217478561502591416009227591582869882982470098168796813426264578076670286029029195560760567",
        "66106892589637039037744676327200772291368517688108041167197715930935273497569759111332854815299471155925869011"
        "997907566713674005971100914739364454164984587128896600583993354569858550495377843782520710717979164977585093",
        "-6610689258963703903774467632720077229136851768810804116719771593093527349756975911133285481529947115592586901"
        "1997907566713674005971100914739364454164984587128896600583993354569858550495377843782520710717979164977585093",
        "65510538131882962253532516149257344303947303215922869215706947533328896936367225583749850307175724719347107679"
        "42880047510471352386048672982490686172141325539593761523736165880408087076700981402252618822009845275008995661"
        "80951300745344526414599508",
        "-6551053813188296225353251614925734430394730321592286921570694753332889693636722558374985030717572471934710767"
        "94288004751047135238604867298249068617214132553959376152373616588040808707670098140225261882200984527500899566"
        "180951300745344526414599508",
        "32279098297",
        "-32279098297",
        "91236285260894969491370094562444170610185292123928049180398654028165920269699400153752501142438076",
        "-91236285260894969491370094562444170610185292123928049180398654028165920269699400153752501142438076",
        "76148543022827828542260034575767140554118312303651220784462009876431985956698652362044",
        "-76148543022827828542260034575767140554118312303651220784462009876431985956698652362044",
        "83588868584829923837376678742649596503169974719002042708417338297148455364317505115231903770625036463360146776"
        "14731986917229847584792471560713599920165841049958614988212354813327899511323107627718358835922805521129145584"
        "8766205373827838498451914146847385535315038611426",
        "-8358886858482992383737667874264959650316997471900204270841733829714845536431750511523190377062503646336014677"
        "61473198691722984758479247156071359992016584104995861498821235481332789951132310762771835883592280552112914558"
        "48766205373827838498451914146847385535315038611426",
        "963957921647213",
        "-963957921647213",
        "13301565202923219609572812103802050473736468733",
        "-13301565202923219609572812103802050473736468733",
        "4746350713999103687568954691814",
        "-4746350713999103687568954691814",
        "20011429070449632004426784508638158988139036766607330588718952397560776330744219090136542375425173015965500111"
        "17510574893770558703407744684777702961205416292826384730912647565673208707968211244040320246494312087239093502"
        "776249390829799552970184550131203169359608726456455152480928583576591394902496106626144",
        "-2001142907044963200442678450863815898813903676660733058871895239756077633074421909013654237542517301596550011"
        "11751057489377055870340774468477770296120541629282638473091264756567320870796821124404032024649431208723909350"
        "2776249390829799552970184550131203169359608726456455152480928583576591394902496106626144",
        "10759428161429231838781777889070016234772542110565633092497371730843624532915759618384576985836675023940464628"
        "76510572923027408167597384711580928008745824321791121192115666986208284696396216698975197552645981002047131726"
        "16980523260714264267451063089420215",
        "-1075942816142923183878177788907001623477254211056563309249737173084362453291575961838457698583667502394046462"
        "87651057292302740816759738471158092800874582432179112119211566698620828469639621669897519755264598100204713172"
        "616980523260714264267451063089420215",
        "17482850282809685590270567694831451647103620486273073654656561484800284449586449034759957283280698757264605680"
        "57080202853997524099097288749318318801615657840242878599655077486108729249226195564937733374638566648902211364"
        "103190286203200478747078106163053",
        "-1748285028280968559027056769483145164710362048627307365465656148480028444958644903475995728328069875726460568"
        "05708020285399752409909728874931831880161565784024287859965507748610872924922619556493773337463856664890221136"
        "4103190286203200478747078106163053",
        "11460180193889065606722132385926501525431980106546682247601052575855000134486061731618687473242633808411918689"
        "848577390823351808790715520481001965421879800810352399655561482898353748786253207752078326991084961012083",
        "-1146018019388906560672213238592650152543198010654668224760105257585500013448606173161868747324263380841191868"
        "9848577390823351808790715520481001965421879800810352399655561482898353748786253207752078326991084961012083",
        "574927035874041759213679385423821561867",
        "-574927035874041759213679385423821561867",
        "120643345454198941508563017089006360092589256126170227342940319190269214269775023269721267117406618",
        "-120643345454198941508563017089006360092589256126170227342940319190269214269775023269721267117406618",
        "43211052397169822368769320044098366176065820670381470825125490923898893035078574715878390619044493658716106759"
        "47591784534993047200738525727009079172748687323192293686157307770205419395587167523566079544451694234557752075"
        "3954381850029768",
        "-4321105239716982236876932004409836617606582067038147082512549092389889303507857471587839061904449365871610675"
        "94759178453499304720073852572700907917274868732319229368615730777020541939558716752356607954445169423455775207"
        "53954381850029768",
        "98444793737487070130632279640294595962478470167942118462283185159603543879669503017508332979219557234170610139"
        "94092483915173465284502461089399372968661262420490350455873655690633576331503541999665999411319072898423762904"
        "939498903689838493823091884957816736065194017711554932378966207638596446",
        "-9844479373748707013063227964029459596247847016794211846228318515960354387966950301750833297921955723417061013"
        "99409248391517346528450246108939937296866126242049035045587365569063357633150354199966599941131907289842376290"
        "4939498903689838493823091884957816736065194017711554932378966207638596446",
        "15495696620257203112514045693327221058931986791279237953556569519202885285817054271037923606674498001305234855"
        "59533763978458224547356178202688985769505",
        "-1549569662025720311251404569332722105893198679127923795355656951920288528581705427103792360667449800130523485"
        "559533763978458224547356178202688985769505",
        "36315742657",
        "-36315742657",
        "89211647920418771588293444938529668277896865658586397967634859311023574407318610587825523245389173998287523112"
        "27018705861210803742330995498617328892413590387831390338234562492080836551321361310716484078814",
        "-8921164792041877158829344493852966827789686565858639796763485931102357440731861058782552324538917399828752311"
        "227018705861210803742330995498617328892413590387831390338234562492080836551321361310716484078814",
        "35644284498138426150375669554606035516354059419614084295334799069248250689730422397562622627877993444533715792"
        "66807953907224412476869508",
        "-3564428449813842615037566955460603551635405941961408429533479906924825068973042239756262262787799344453371579"
        "266807953907224412476869508",
        "803208608149818042371281509635155439483",
        "-803208608149818042371281509635155439483",
        "48661893242962322340618333327462058903269194726416677252831061863587955904208277323069604433444643127697265020"
        "55107509",
        "-4866189324296232234061833332746205890326919472641667725283106186358795590420827732306960443344464312769726502"
        "055107509",
        "207298564235033398879052037508717471071493511497187540585110196743",
        "-207298564235033398879052037508717471071493511497187540585110196743",
        "19371791852088349832501298593500360195930517847119145071657924579151063231226572013736504758002208785305597767"
        "92609085120147754118185627565812944663929494270677002539195655144707850718726595255830007958125312906695613658"
        "15697655594188906",
        "-1937179185208834983250129859350036019593051784711914507165792457915106323122657201373650475800220878530559776"
        "79260908512014775411818562756581294466392949427067700253919565514470785071872659525583000795812531290669561365"
        "815697655594188906",
        "2437877491739207",
        "-2437877491739207",
        "37013774102202564305419053038604891745828779816673570038156288209445014156533018002446399548329104265253840467"
        "05187481817530634934975273457229126436267250310026443575294237162907178907888340503446787581337425905812404724"
        "8097835249024123072756933",
        "-3701377410220256430541905303860489174582877981667357003815628820944501415653301800244639954832910426525384046"
        "70518748181753063493497527345722912643626725031002644357529423716290717890788834050344678758133742590581240472"
        "48097835249024123072756933",
        "354494755327",
        "-354494755327",
        "11780642893082070770985419994433169541426957824422257433844",
        "-11780642893082070770985419994433169541426957824422257433844",
        "48543066015464860059564079306153387466430804969515597972925618677825730232164724155094922026691617875349784991"
        "4452979205318162",
        "-4854306601546486005956407930615338746643080496951559797292561867782573023216472415509492202669161787534978499"
        "14452979205318162",
        "23858852603627264837843140314865296322097028936336850188878465502728409524610276592851077626292364546252755103"
        "916928846389671162429425418906991891502973",
        "-2385885260362726483784314031486529632209702893633685018887846550272840952461027659285107762629236454625275510"
        "3916928846389671162429425418906991891502973",
        "20734750258906257909128754851809058134991030806170222047227227100956310775124851240448811399861355381691814863"
        "12704584071614904004373594716419",
        "-2073475025890625790912875485180905813499103080617022204722722710095631077512485124044881139986135538169181486"
        "312704584071614904004373594716419",
        "15280710757061816529388583850582811170979066299366854920512818520549969116440063183787310498271091672343434592"
        "650388724950511822972092076",
        "-1528071075706181652938858385058281117097906629936685492051281852054996911644006318378731049827109167234343459"
        "2650388724950511822972092076",
        "63824853716936191690220555950312290917626387368600104148893656739818911664262421366102342219291714701070088433"
        "00114050380584829581671837693187024514818",
        "-6382485371693619169022055595031229091762638736860010414889365673981891166426242136610234221929171470107008843"
        "300114050380584829581671837693187024514818",
        "12185224224701673175361331319115762816895575796767843658049699617134858039026831564288739190981827007791493862"
        "865956911735574421879562096311558676154252796632277351699205162505700258194809563580445507",
        "-1218522422470167317536133131911576281689557579676784365804969961713485803902683156428873919098182700779149386"
        "2865956911735574421879562096311558676154252796632277351699205162505700258194809563580445507",
        "34003980273948488873087243030302546934071096333462110121575903766367670827215796429777573314114296018716373089"
        "77755954645412747064831507963359083226222053039154197699916267753919473228930637511003926502655480846059743860"
        "7169664283497662076280786",
        "-3400398027394848887308724303030254693407109633346211012157590376636767082721579642977757331411429601871637308"
        "97775595464541274706483150796335908322622205303915419769991626775391947322893063751100392650265548084605974386"
        "07169664283497662076280786",
        "12284819893835322358803791109201461242999878096152062789938218645610904514282639984521904951939502805584086830"
        "5519753136489752495357572137972700299899629238691174342998161949671331013802430679284465951931850871392212632",
        "-1228481989383532235880379110920146124299987809615206278993821864561090451428263998452190495193950280558408683"
        "0551975313648975249535757213797270029989962923869117434299816194967133101380243067928446595193185087139221263"
        "2",
        "43537967438743700082839955990027575248714598937547106788531846714509188167960975769453819977500278194590313507"
        "78172739952639512765658406042021812135209777630845270256729820267920923047369961965082871882128711312049804834"
        "5913575657082695406163703126042367182026511481872506111256791596",
        "-4353796743874370008283995599002757524871459893754710678853184671450918816796097576945381997750027819459031350"
        "77817273995263951276565840604202181213520977763084527025672982026792092304736996196508287188212871131204980483"
        "45913575657082695406163703126042367182026511481872506111256791596",
        "58406767675650075287505789516356411545831826432139397101494864325157903449602707567656548116973052773130530151"
        "05883799035464594028855982944934022050818869114628180210055366653621120682350808474415346313441095929694986833"
        "5640749454837",
        "-5840676767565007528750578951635641154583182643213939710149486432515790344960270756765654811697305277313053015"
        "10588379903546459402885598294493402205081886911462818021005536665362112068235080847441534631344109592969498683"
        "35640749454837",
        "84587321012990637435302207624596994786946012775048225235611123228684932715984523158056375829513728520954829377"
        "63838306145535660144834729122089930449583661481701622043102937967854772277026753712163049572281886158675765674"
        "06231041038281756292397397561",
        "-8458732101299063743530220762459699478694601277504822523561112322868493271598452315805637582951372852095482937"
        "76383830614553566014483472912208993044958366148170162204310293796785477227702675371216304957228188615867576567"
        "406231041038281756292397397561",
        "53588224463377221082233930622411910641801456988689291134720826079004949443094787414435",
        "-53588224463377221082233930622411910641801456988689291134720826079004949443094787414435",
        "72112722851930798700228005210608826370783262851441860040831117968729809788108346159403319971018904246301591088"
        "717098607465649205797470097967252119620134427778008686902310907006410363397508152328805949858597088819284277",
        "-7211272285193079870022800521060882637078326285144186004083111796872980978810834615940331997101890424630159108"
        "8717098607465649205797470097967252119620134427778008686902310907006410363397508152328805949858597088819284277",
        "64191866070377430988212973804321854903051364554061142993604663108256603606135698017738468532188395767563175168"
        "1520848096394297317163463488891570190724496654177980091225725954578443264041706056677969812886935701",
        "-6419186607037743098821297380432185490305136455406114299360466310825660360613569801773846853218839576756317516"
        "81520848096394297317163463488891570190724496654177980091225725954578443264041706056677969812886935701",
        "30",
        "-30",
        "63945730417495446379321420632526608760119885173521297598080218076157866025031602591955619636581031417131950460"
        "53277921040817887800559226509891982140334607813922841396821838502087774297750475588617168795",
        "-6394573041749544637932142063252660876011988517352129759808021807615786602503160259195561963658103141713195046"
        "053277921040817887800559226509891982140334607813922841396821838502087774297750475588617168795",
        "17864662225618174255772493737429810375663011469615917306771211166108536494575674670816374835842128996359548012"
        "3784589855527949369073241188292017545622280110725841753172555345544825905686634945825341917843131751224274216"
        "0",
        "-1786466222561817425577249373742981037566301146961591730677121116610853649457567467081637483584212899635954801"
        "23784589855527949369073241188292017545622280110725841753172555345544825905686634945825341917843131751224274216"
        "0",
        "137832029750529182794342751962197941412491800492104",
        "-137832029750529182794342751962197941412491800492104",
        "81080381283247063684740806864635481364815170393427295335390809125613822447336684459717796234791478789239939706"
        "00643926905142316004585446689923640217524203592135814813370649929971097550423245537858260",
        "-8108038128324706368474080686463548136481517039342729533539080912561382244733668445971779623479147878923993970"
        "600643926905142316004585446689923640217524203592135814813370649929971097550423245537858260",
        "5002261098184392173934780113066967242",
        "-5002261098184392173934780113066967242",
        "69095133566791399581241754065338664877645291880114087972845419675503975056397782007244250550635990887472580163"
        "0758561609054355988759175228289",
        "-6909513356679139958124175406533866487764529188011408797284541967550397505639778200724425055063599088747258016"
        "30758561609054355988759175228289",
        "10674213497798883899476403327832261239905267095517429500221095458852845305968864392299051608409658803957443554"
        "649236067724400487971044164121242198029786220",
        "-1067421349779888389947640332783226123990526709551742950022109545885284530596886439229905160840965880395744355"
        "4649236067724400487971044164121242198029786220",
        "17992446102498398809906415490084711513529803098403245836231064924343042871622653363618957583240979467823413823"
        "37323171083684413277613333023050484925220778591795785266467115086944942175732744792900316243482841105236607158"
        "0989788644644058346",
        "-1799244610249839880990641549008471151352980309840324583623106492434304287162265336361895758324097946782341382"
        "33732317108368441327761333302305048492522077859179578526646711508694494217573274479290031624348284110523660715"
        "80989788644644058346",
        "33842687090178160518628086932775600899160163731425276680317104716407292755478424345380082755988441733647290183"
        "07990880813619673477739863613335582262465262591776804971703186050634986772399259265542136927062455510910617771"
        "4680336653018611913032875963068852500326353648887921416851020395037162987766",
        "-3384268709017816051862808693277560089916016373142527668031710471640729275547842434538008275598844173364729018"
        "30799088081361967347773986361333558226246526259177680497170318605063498677239925926554213692706245551091061777"
        "14680336653018611913032875963068852500326353648887921416851020395037162987766",
        "10540838263978698529700420651692515903282345558375392711026241600274712959452332711061179304508573468741005248"
        "58325086710499923040919634021718345296558298025504382070214470223730",
        "-1054083826397869852970042065169251590328234555837539271102624160027471295945233271106117930450857346874100524"
        "858325086710499923040919634021718345296558298025504382070214470223730",
        "136407237437852413879681494779911076041207111591826209650287776324941155126675066585977968663006698647245",
        "-136407237437852413879681494779911076041207111591826209650287776324941155126675066585977968663006698647245",
        "22248799428262112115699209007266602118693233233100973063065713088133339810737445040979380505653028372645302537"
        "63057896699924896596092066791400879438413472679293844669326318441711505238433328261842523388469632517312478257"
        "062414756535170295711651910005290949014898120581894",
        "-2224879942826211211569920900726660211869323323310097306306571308813333981073744504097938050565302837264530253"
        "76305789669992489659609206679140087943841347267929384466932631844171150523843332826184252338846963251731247825"
        "7062414756535170295711651910005290949014898120581894",
        "40472883085653103075005094892253461099235224674645145199685915925592304557728557134224154535812915546636951290"
        "34041054508221015627588797163542760075301595269083019308332323602089140",
        "-4047288308565310307500509489225346109923522467464514519968591592559230455772855713422415453581291554663695129"
        "034041054508221015627588797163542760075301595269083019308332323602089140",
        "10358169480317415878490864092165429169356566962461641191539282327133208567141235889400505331317907226770350362"
        "33284471386922732645880058503610308346951059222695446014860710224009856786160873437306753478940623814638264314"
        "179274958950671363159961289293",
        "-1035816948031741587849086409216542916935656696246164119153928232713320856714123588940050533131790722677035036"
        "23328447138692273264588005850361030834695105922269544601486071022400985678616087343730675347894062381463826431"
        "4179274958950671363159961289293",
        "1718216153801609870534260896130470102834028900689159827595233108230047",
        "-1718216153801609870534260896130470102834028900689159827595233108230047",
        "157320",
        "-157320",
        "49222085478169730444596351336467039698793725715330960542968833866441223805309517262998474269877320423975957799"
        "76830474678726947018304354845591378517358359470056483109237714380888286233563680472388849805778688479350769638"
        "569123934902",
        "-4922208547816973044459635133646703969879372571533096054296883386644122380530951726299847426987732042397595779"
        "97683047467872694701830435484559137851735835947005648310923771438088828623356368047238884980577868847935076963"
        "8569123934902",
        "30674762572853358745668233336885434421284508100798716574671244915433385094192650277486950146438133061815440355"
        "36165512867635982606378678645467114585754422748255288790715628747169903578478381870157776988838327310364853622"
        "786578500012302428307039672498275",
        "-3067476257285335874566823333688543442128450810079871657467124491543338509419265027748695014643813306181544035"
        "53616551286763598260637867864546711458575442274825528879071562874716990357847838187015777698883832731036485362"
        "2786578500012302428307039672498275",
        "883397505237211649947418585007890070022882946801242047716792933816916920312758",
        "-883397505237211649947418585007890070022882946801242047716792933816916920312758",
        "11000165962942779303967020748372914756949506297623637447595715890301081399332981896957701870245158036267155266"
        "90351811923084433342467648792302262756272887683638924910835436501074742486120762849764143752164258427412169550"
        "392618539176353678199434066032915",
        "-1100016596294277930396702074837291475694950629762363744759571589030108139933298189695770187024515803626715526"
        "69035181192308443334246764879230226275627288768363892491083543650107474248612076284976414375216425842741216955"
        "0392618539176353678199434066032915",
        "33186532438277539300750766093671679502152715471971659565415786770950357891052302855773005379702530243800048694"
        "48887191421072498566168883197146749684037295491",
        "-3318653243827753930075076609367167950215271547197165956541578677095035789105230285577300537970253024380004869"
        "448887191421072498566168883197146749684037295491",
        "18917325422442253597680054225840324956976833511185836470606776355469702018395215498115502098244359450586779118"
        "54694599187976558486369394759935207721504909121509940015466803896484644246932892145804139856903440154853662221"
        "0828439622386945359553017072968575829651399459030775837160233158886103",
        "-1891732542244225359768005422584032495697683351118583647060677635546970201839521549811550209824435945058677911"
        "85469459918797655848636939475993520772150490912150994001546680389648464424693289214580413985690344015485366222"
        "10828439622386945359553017072968575829651399459030775837160233158886103",
        "25436678621691004366599095080499723194508890842874700118415937305905849311887574932980345388263552292704016593"
        "7386417763335659992218458086511885522609981363333096153519757022667758401739961262948319999739472528794701",
        "-2543667862169100436659909508049972319450889084287470011841593730590584931188757493298034538826355229270401659"
        "37386417763335659992218458086511885522609981363333096153519757022667758401739961262948319999739472528794701",
        "37544442396527426899195446849672655465276344502770712178079384432684510232491164260359865664795991038222782506"
        "894463672347582854",
        "-3754444239652742689919544684967265546527634450277071217807938443268451023249116426035986566479599103822278250"
        "6894463672347582854",
        "15673578372504731899692149900135775418224632075238646337867467957107034530818946478167665455128984412394389268"
        "79781916673444498950817900650577266651411123095279561025414008964509254452662923740464332991982480356386684085"
        "9270664303879742294839213766102351871211663636813556965",
        "-1567357837250473189969214990013577541822463207523864633786746795710703453081894647816766545512898441239438926"
        "87978191667344449895081790065057726665141112309527956102541400896450925445266292374046433299198248035638668408"
        "59270664303879742294839213766102351871211663636813556965",
        "27481560151479303283253590172063634693210359375791056643367262359056676411581745877899312410880682306069203702"
        "180378974272137310962",
        "-2748156015147930328325359017206363469321035937579105664336726235905667641158174587789931241088068230606920370"
        "2180378974272137310962",
        "59764850084546321076270115679381459961266663920938595034931337715038895288728780241940147905268936247355365797"
        "83945204495971737317740526803797530545937149934581710895325861414107396501153684819141275814501488020141580007"
        "6045236677519189441266640929126443802253464497061850704733496580039504966534",
        "-5976485008454632107627011567938145996126666392093859503493133771503889528872878024194014790526893624735536579"
        "78394520449597173731774052680379753054593714993458171089532586141410739650115368481914127581450148802014158000"
        "76045236677519189441266640929126443802253464497061850704733496580039504966534",
        "23634638941050695960011434318151158702086923426642055865413266164215435511372735954255748560821037984078715486"
        "6691122790684707204957449484562815548156526563035046035495563526969340",
        "-2363463894105069596001143431815115870208692342664205586541326616421543551137273595425574856082103798407871548"
        "66691122790684707204957449484562815548156526563035046035495563526969340",
        "88159352765328899360075546157973995274683996876155487407002548978618644298156155607289728256925658529817161781"
        "82277189313249729477257089767951370396136769451014576455113",
        "-8815935276532889936007554615797399527468399687615548740700254897861864429815615560728972825692565852981716178"
        "182277189313249729477257089767951370396136769451014576455113",
        "15766842373922966734945972936934487778733908393732",
        "-15766842373922966734945972936934487778733908393732",
        "6595752830737826074851600247398704243439581",
        "-6595752830737826074851600247398704243439581",
        "88360711950716702068044459909288522408861205026805163699827572636017076710426639195107856478075259064387810810"
        "70485938308073173106887578724088580625300740422785251336114865694378592174480404325082887193552667795466276350"
        "13182590336527",
        "-8836071195071670206804445990928852240886120502680516369982757263601707671042663919510785647807525906438781081"
        "07048593830807317310688757872408858062530074042278525133611486569437859217448040432508288719355266779546627635"
        "013182590336527",
        "33694907409791755762655404952802940988899691249",
        "-33694907409791755762655404952802940988899691249",
        "323333915936767999634844119809319135460509879311229599308354939953168279",
        "-323333915936767999634844119809319135460509879311229599308354939953168279",
        "109533461242727456317187321637480456637352670377446387229311720642342270936669079",
        "-109533461242727456317187321637480456637352670377446387229311720642342270936669079",
        "13859113105573664564402569090640948906955433977849428611800892707402593947087211600362538625972698772649423931"
        "41524860354011688095362554758164667579347793400229024555480224078270156224230580104617746710199310164986752840"
        "215359839845498564497854670854",
        "-1385911310557366456440256909064094890695543397784942861180089270740259394708721160036253862597269877264942393"
        "14152486035401168809536255475816466757934779340022902455548022407827015622423058010461774671019931016498675284"
        "0215359839845498564497854670854",
        "29774115054799535833930768716897017350284486426186383584162324318962025027678962428276603554895692141466695531"
        "51908868326810407473932437112954246529398641615209735016638444445481169272826443400314220293426061656573319883"
        "1279676615440572524973775003086833767426",
        "-2977411505479953583393076871689701735028448642618638358416232431896202502767896242827660355489569214146669553"
        "15190886832681040747393243711295424652939864161520973501663844444548116927282644340031422029342606165657331988"
        "31279676615440572524973775003086833767426",
        "74696367101640724890251441072354635571976155536130046140237438589798381789554793148406818355661257862104683281"
        "72231801770902801248618042254042767598047278245946816292639497628822587226445669302389147755725975917746276582"
        "6175659413065496505969367440547828089465241517425279607801825661125137502490209352550",
        "-7469636710164072489025144107235463557197615553613004614023743858979838178955479314840681835566125786210468328"
        "17223180177090280124861804225404276759804727824594681629263949762882258722644566930238914775572597591774627658"
        "26175659413065496505969367440547828089465241517425279607801825661125137502490209352550",
        "1204196594639385922414846449687106633371016123988162000948048507502126642148118",
        "-1204196594639385922414846449687106633371016123988162000948048507502126642148118",
        "846833858170919771038203149272750341572762713657689308208261686002409383861625765452744323828942233333",
        "-846833858170919771038203149272750341572762713657689308208261686002409383861625765452744323828942233333",
        "18216145224137404727345686789951586155538089744256914821900147059836133890388553559371463148022597453524403593"
        "90794610126891780319312880325124426030449790367051638729360263468656338396543420880600285946528081319038883697"
        "70826412770233292335398149959646",
        "-1821614522413740472734568678995158615553808974425691482190014705983613389038855355937146314802259745352440359"
        "39079461012689178031931288032512442603044979036705163872936026346865633839654342088060028594652808131903888369"
        "770826412770233292335398149959646",
        "982677520230623904675071524585093908331832014895485448777250229533226440326748097093798644810",
        "-982677520230623904675071524585093908331832014895485448777250229533226440326748097093798644810",
        "2470642728099219780778259687407342337194729387462688122808418202258274933287",
        "-2470642728099219780778259687407342337194729387462688122808418202258274933287",
        "21642",
        "-21642",
        "28109476527429648692470007325789564480573483619310804793750563939329019602047743826734114282192488430735600284"
        "39898968091191196094328350162853464988757430274193667816584267081836990278390036600330647211846138204411304538"
        "1589251197206074842928328220219584087542112389580462137108895790086",
        "-2810947652742964869247000732578956448057348361931080479375056393932901960204774382673411428219248843073560028"
        "43989896809119119609432835016285346498875743027419366781658426708183699027839003660033064721184613820441130453"
        "81589251197206074842928328220219584087542112389580462137108895790086",
        "24473934394139795039432356490797923225705279667816043556538102097065",
        "-24473934394139795039432356490797923225705279667816043556538102097065",
        "967666937415492520370655115944840613051857445576119169258498049770608556022671644163127742796054969198094856",
        "-967666937415492520370655115944840613051857445576119169258498049770608556022671644163127742796054969198094856",
        "87776704369282704046366728440459711261922912095666480127303565036504584638604371630442938660631314991881060793"
        "22582985846405009457295181485284286775546965040263973340573887093705724765371051485505998527923498980801571623"
        "582212444207027545811844533625560957194790459778850062900748",
        "-8777670436928270404636672844045971126192291209566648012730356503650458463860437163044293866063131499188106079"
        "32258298584640500945729518148528428677554696504026397334057388709370572476537105148550599852792349898080157162"
        "3582212444207027545811844533625560957194790459778850062900748",
        "10519677007822794739900735125229787943972331835720269482799977",
        "-10519677007822794739900735125229787943972331835720269482799977",
        "15900728712787435371803330821001463242954804290974451570116111684622604680697427995193034960513131334246329398"
        "83615906533434106640128123864165917007171699524724790769928823375793283671051479570198286895253998686473352852"
        "617282646423776591164499455695311138248299",
        "-1590072871278743537180333082100146324295480429097445157011611168462260468069742799519303496051313133424632939"
        "88361590653343410664012812386416591700717169952472479076992882337579328367105147957019828689525399868647335285"
        "2617282646423776591164499455695311138248299",
        "383577258388475022706431955525247573599499248581278423720457780337892379126935",
        "-383577258388475022706431955525247573599499248581278423720457780337892379126935",
        "40926745021612598438245893439852421614475010427780803810026108528704577579827683925308089429002985110434886616"
        "25193784801456963642409098266685508736530379429664593489447947572985105744943017018734265426997872693998175650"
        "632205202701888817395372790067319643794599452089403576233527127077671169622",
        "-4092674502161259843824589343985242161447501042778080381002610852870457757982768392530808942900298511043488661"
        "62519378480145696364240909826668550873653037942966459348944794757298510574494301701873426542699787269399817565"
        "0632205202701888817395372790067319643794599452089403576233527127077671169622",
        "13404427613900927247182634952369430867149749267930075884187025351198408344520192279603454195813154024830997527"
        "858376982434391797362547445527455503408360391999256823815839930266546427915841779",
        "-1340442761390092724718263495236943086714974926793007588418702535119840834452019227960345419581315402483099752"
        "7858376982434391797362547445527455503408360391999256823815839930266546427915841779",
        "17827316941769363584694653415610204254735532014681232791757298492159779106386145192375634544483775411451865232"
        "81923996935231617014737050458102419525422740666362815640052502503060273650753054955785368306923652680382227789"
        "211754118567371586934",
        "-1782731694176936358469465341561020425473553201468123279175729849215977910638614519237563454448377541145186523"
        "28192399693523161701473705045810241952542274066636281564005250250306027365075305495578536830692365268038222778"
        "9211754118567371586934",
        "71445070949104597011738157784103420085714634511010244724089831548057084941763190363056184849082451693612273802"
        "898122477866754965092090652561708550",
        "-7144507094910459701173815778410342008571463451101024472408983154805708494176319036305618484908245169361227380"
        "2898122477866754965092090652561708550",
        "29824403422520048745171796949849941396331286906646046322404644703962912292598789686250791183932008392905170486"
        "03213112932934888256473444379554465392849736230477609330523388162323162435896343409703341143480164452777504683"
        "2916455013625115699965097251269229855092992005057236242615322851235046388965677957662",
        "-2982440342252004874517179694984994139633128690664604632240464470396291229259878968625079118393200839290517048"
        "60321311293293488825647344437955446539284973623047760933052338816232316243589634340970334114348016445277750468"
        "32916455013625115699965097251269229855092992005057236242615322851235046388965677957662",
        "3305915750647269729664177438631754300633043385617699516297426765949911376314744190602062381040796872234391958",
        "-330591575064726972966417743863175430063304338561769951629742676594991137631474419060206238104079687223439195"
        "8",
        "3478784122562389625603",
        "-3478784122562389625603",
        "92086546733522598295324541515522297712847163647680019382995445215746554554174953976307228051786981849535290733"
        "11240305055495414065177151686590005953079893562585713420115382587719627481304005183409267421404426343243634385"
        "5130586740109759258782054166065929",
        "-9208654673352259829532454151552229771284716364768001938299544521574655455417495397630722805178698184953529073"
        "31124030505549541406517715168659000595307989356258571342011538258771962748130400518340926742140442634324363438"
        "55130586740109759258782054166065929",
        "65957872354116509297400621319564903702253130516097675674670945971981309842410416012915540911950348439255536201"
        "70083579304805559989067725356303669289962213733164505497133169037358443837972013418148951762364398834129288723"
        "5850459604282122921452528",
        "-6595787235411650929740062131956490370225313051609767567467094597198130984241041601291554091195034843925553620"
        "17008357930480555998906772535630366928996221373316450549713316903735844383797201341814895176236439883412928872"
        "35850459604282122921452528",
        "41651900747114983727056866420277486280106315916737003460858495694145029037583120313931969034769976448696690227"
        "81414821544378466903717692187198478658086148256293129853045819435002914",
        "-4165190074711498372705686642027748628010631591673700346085849569414502903758312031393196903476997644869669022"
        "781414821544378466903717692187198478658086148256293129853045819435002914",
        "50217255370374475390838077216464264930421779252809044071619158072448447332823566492781798477163637287540989883"
        "0005825976063650593238541433729038373056225370315599153406133185392320847",
        "-5021725537037447539083807721646426493042177925280904407161915807244844733282356649278179847716363728754098988"
        "30005825976063650593238541433729038373056225370315599153406133185392320847",
        "25810339190726741831136349797818105994358611764887668315197822821632935574011575463532742868091838388104842551"
        "381619490991039627647851601302773448573544037953054558472548",
        "-2581033919072674183113634979781810599435861176488766831519782282163293557401157546353274286809183838810484255"
        "1381619490991039627647851601302773448573544037953054558472548",
        "46654229386679227313905452395259910674786673572984768818608262510894366621465408279821342270876846850309919141"
        "03761128873483160892760746361799786480055617662181625815248230938316973880302906675299954379007760370823224832"
        "674779",
        "-4665422938667922731390545239525991067478667357298476881860826251089436662146540827982134227087684685030991914"
        "10376112887348316089276074636179978648005561766218162581524823093831697388030290667529995437900776037082322483"
        "2674779",
        "22237355978302248640498900578340394936380989607751676041450663752401008216740081949613371247416610842190671455"
        "08494176034464042665143434078149689607318313818865277681569064932224810481504434495675653041063465302100041302"
        "802648038458370477008560806359234416742985635022084248641500377",
        "-2223735597830224864049890057834039493638098960775167604145066375240100821674008194961337124741661084219067145"
        "50849417603446404266514343407814968960731831381886527768156906493222481048150443449567565304106346530210004130"
        "2802648038458370477008560806359234416742985635022084248641500377",
        "42345447563490737654515925924136916105150662665879987625806652403110474948139404742355256883201223238547442445"
        "427767854602327889485658289780295383306283583160293766253974742903668207523228749309062814526339073599070",
        "-4234544756349073765451592592413691610515066266587998762580665240311047494813940474235525688320122323854744244"
        "5427767854602327889485658289780295383306283583160293766253974742903668207523228749309062814526339073599070",
        "40757494492054593189505181124883370961902335356122875708839948469462201920152164929215445",
        "-40757494492054593189505181124883370961902335356122875708839948469462201920152164929215445",
        "48942221756296831276227411045327660493463360347305676060825432708044018167162800609024966602128724721526938061"
        "7364913734802444913151007354363389984204873709403053283740243705411640696405073698784366581571968399",
        "-4894222175629683127622741104532766049346336034730567606082543270804401816716280060902496660212872472152693806"
        "17364913734802444913151007354363389984204873709403053283740243705411640696405073698784366581571968399",
        "20382825628085334540006351907262507928018003094716398571062829524198278747489752147236851828100027712001193035"
        "38241520229051496816580667773994080212815609727846957451834831283304477214870759065523499415573790950783540834"
        "87747855104922",
        "-2038282562808533454000635190726250792801800309471639857106282952419827874748975214723685182810002771200119303"
        "53824152022905149681658066777399408021281560972784695745183483128330447721487075906552349941557379095078354083"
        "487747855104922",
        "12579256107866823853770946314828592500732374403508913980712874463292391864755987195690537357503818366347747743"
        "186695890433",
        "-1257925610786682385377094631482859250073237440350891398071287446329239186475598719569053735750381836634774774"
        "3186695890433",
        "26755461309842501536357032592700549777692476999989333013567704060006230872678556198949194222172481328325450314"
        "71002493957584148841164080687012138128574207556571241164890402799074037813199527901796573733501070856309914328"
        "8460848557783",
        "-2675546130984250153635703259270054977769247699998933301356770406000623087267855619894919422217248132832545031"
        "47100249395758414884116408068701213812857420755657124116489040279907403781319952790179657373350107085630991432"
        "88460848557783",
        "17971843448296958898769066052293629550461979532851754144850150744332704058402683001896522370620535113931842438"
        "3916072860628585971720095475736018979361135523338248920218527202",
        "-1797184344829695889876906605229362955046197953285175414485015074433270405840268300189652237062053511393184243"
        "83916072860628585971720095475736018979361135523338248920218527202",
        "45594767274159844156677426385063948323948049422416627370802357120027193229074658630687125311821759790700363176"
        "80566622",
        "-4559476727415984415667742638506394832394804942241662737080235712002719322907465863068712531182175979070036317"
        "680566622",
        "18056873734891410248496182290389914805111823879862689239017282732",
        "-18056873734891410248496182290389914805111823879862689239017282732",
        "28355632329442976457768532159881703427555635510700435885472670967222653884076177077876502624372493819303621756"
        "857250806505170393973261606631093857830885883244831587318220509004",
        "-2835563232944297645776853215988170342755563551070043588547267096722265388407617707787650262437249381930362175"
        "6857250806505170393973261606631093857830885883244831587318220509004",
        "14597326549318333175154331397626657127733089647832274717099267803872316735762254613209248998209389494221937902"
        "60955695331912805657904286897274122419209888368548603",
        "-1459732654931833317515433139762665712773308964783227471709926780387231673576225461320924899820938949422193790"
        "260955695331912805657904286897274122419209888368548603",
        "841297417411594292128977",
        "-841297417411594292128977",
        "42421956739837376009701551032357529819383720242885920133632720640757084710581349605518620707104531890273172817"
        "73782487650970",
        "-4242195673983737600970155103235752981938372024288592013363272064075708471058134960551862070710453189027317281"
        "773782487650970",
        "197127905405798244",
        "-197127905405798244",
        "6563407470658357675196420807382675727943443587151170499642011999875762151944659352887984041897388778521562733",
        "-656340747065835767519642080738267572794344358715117049964201199987576215194465935288798404189738877852156273"
        "3",
        "17112086243352986250787201352875567119586825412350041655265571993362458706494691490576688232714694942214953155"
        "6848478731913777486790475986722345662117903207153341",
        "-1711208624335298625078720135287556711958682541235004165526557199336245870649469149057668823271469494221495315"
        "56848478731913777486790475986722345662117903207153341",
        "18721446076322739858626974213004577159188738398532888773615674186296036919361082271592297860195251908894002942"
        "4980096549841026833488303831185375087247455968007157419452960145311595471",
        "-1872144607632273985862697421300457715918873839853288877361567418629603691936108227159229786019525190889400294"
        "24980096549841026833488303831185375087247455968007157419452960145311595471",
        "26730904873740819937312075254893911452884887622906004504826034241702405996004467401807185559006677413283184825"
        "06598059839151491967628487386391045037818794920023261735737921639708995039726148095626857322210114264941784225"
        "627483927045402749218",
        "-2673090487374081993731207525489391145288488762290600450482603424170240599600446740180718555900667741328318482"
        "50659805983915149196762848738639104503781879492002326173573792163970899503972614809562685732221011426494178422"
        "5627483927045402749218",
        "29958687453111278905201302590854637968276604049969693847125650383257134534561233984452991390758025056314564264"
        "7",
        "-2995868745311127890520130259085463796827660404996969384712565038325713453456123398445299139075802505631456426"
        "47",
        "40553847558085187488793992045932761709296119224848080220881387683053148965856486482417826667227168387946433041"
        "27870245842492264143494247280669618495845460836799967372511317651316489329444951009816429079330453048842212292"
        "78087094810231012513599884296417415741723145516546902774087770992604",
        "-4055384755808518748879399204593276170929611922484808022088138768305314896585648648241782666722716838794643304"
        "12787024584249226414349424728066961849584546083679996737251131765131648932944495100981642907933045304884221229"
        "278087094810231012513599884296417415741723145516546902774087770992604",
        "42899975255795088868049109990844754697592595571831182364850547357374850474605667986880524829330270759956261401"
        "81076328124548622067825535609834113884951451721787266314523910215228638324453588589604475728750868849529649579"
        "405314779527171490876426202137784122981787297800640695809335850632264276817218",
        "-4289997525579508886804910999084475469759259557183118236485054735737485047460566798688052482933027075995626140"
        "18107632812454862206782553560983411388495145172178726631452391021522863832445358858960447572875086884952964957"
        "9405314779527171490876426202137784122981787297800640695809335850632264276817218",
        "8307592530302620538620421474950064873013",
        "-8307592530302620538620421474950064873013",
        "668153113826415803744690433659063449914674108460",
        "-668153113826415803744690433659063449914674108460",
        "46917857009025361535384034419352878543368877134948287044907072634745489626203425426919312434872888667388137952"
        "819558853009128820322712955326948275185023832843664510785316937903",
        "-4691785700902536153538403441935287854336887713494828704490707263474548962620342542691931243487288866738813795"
        "2819558853009128820322712955326948275185023832843664510785316937903",
        "72692276728923532198738657661593229541714898424777445103294553106601965453652630548922019551752677856073619742"
        "879036073418",
        "-7269227672892353219873865766159322954171489842477744510329455310660196545365263054892201955175267785607361974"
        "2879036073418",
        "13651474980210140072741453952772474166537403524720590162164279406585235653205786140216630367291543390633850983"
        "48763260722534882240886880631939819",
        "-1365147498021014007274145395277247416653740352472059016216427940658523565320578614021663036729154339063385098"
        "348763260722534882240886880631939819",
        "11430072001438607071872022968300327204614618677538199742396745820476595996343190103795479783995634615153036690"
        "9939183214",
        "-1143007200143860707187202296830032720461461867753819974239674582047659599634319010379547978399563461515303669"
        "09939183214",
        "6762",
        "-6762",
        "52958329794842511544564431607079502085929565913139912125121000214082684350382689340216127453430020886928460043"
        "47260475729452385272488399470679922707265973272215062940533468450212079349461525473660310528234292691776677200"
        "4919",
        "-5295832979484251154456443160707950208592956591313991212512100021408268435038268934021612745343002088692846004"
        "34726047572945238527248839947067992270726597327221506294053346845021207934946152547366031052823429269177667720"
        "04919",
        "176688206756700071063559027466389453920766491733115376426152125336429137613213551729990793300311032785623",
        "-176688206756700071063559027466389453920766491733115376426152125336429137613213551729990793300311032785623",
        "19224830801103482570334119501116567522986553718569536170865298436628655614099942919932874576711534780290771497"
        "25149857725",
        "-1922483080110348257033411950111656752298655371856953617086529843662865561409994291993287457671153478029077149"
        "725149857725",
        "116652054071220139544336382432735630060274666911983",
        "-116652054071220139544336382432735630060274666911983",
        "51741045380803395439389902637949282490649156746578961298528996089362859609717618634865566256304663100501606242"
        "11680012958157394810117796321101931191821302341708281726643201876685372393200977149042032383466554582623637450"
        "297592330981838876150680862436764327264788138788126029954523641986",
        "-5174104538080339543938990263794928249064915674657896129852899608936285960971761863486556625630466310050160624"
        "21168001295815739481011779632110193119182130234170828172664320187668537239320097714904203238346655458262363745"
        "0297592330981838876150680862436764327264788138788126029954523641986",
        "56602051214329308908684928399837460067357624824927409574521689818931407829513021195830603280968596169697964984"
        "97648962003536048362955965288372621482455765633708881304917323180024573307285889148176802846535215573303735697"
        "0930661713472640527903665",
        "-5660205121432930890868492839983746006735762482492740957452168981893140782951302119583060328096859616969796498"
        "49764896200353604836295596528837262148245576563370888130491732318002457330728588914817680284653521557330373569"
        "70930661713472640527903665",
        "50465855132621952642877529162542254312895872248149199085828932352785530557943935823716975491349313488156548806"
        "716473058702726383127266",
        "-5046585513262195264287752916254225431289587224814919908582893235278553055794393582371697549134931348815654880"
        "6716473058702726383127266",
        "2103822150383069790413887708626272542825699206757181614299988243654634518589287733034323781018255",
        "-2103822150383069790413887708626272542825699206757181614299988243654634518589287733034323781018255",
        "28841458682215661904646543848983365169440310945499493352407450891893203934126252057154585734115374646780900671"
        "52741985416827426839574623518965109414118185662809105887512018969132683541056905460490486376635525002751775036"
        "410408309529607280059108670794204594780445621",
        "-2884145868221566190464654384898336516944031094549949335240745089189320393412625205715458573411537464678090067"
        "15274198541682742683957462351896510941411818566280910588751201896913268354105690546049048637663552500275177503"
        "6410408309529607280059108670794204594780445621",
        "17151949587338385537174755341574689039375819189521363664160085642631581896638291949680521029535105884955679278"
        "095750173056302788876858996886433270550139444896998901",
        "-1715194958733838553717475534157468903937581918952136366416008564263158189663829194968052102953510588495567927"
        "8095750173056302788876858996886433270550139444896998901",
        "48053335684970277635276374983274258742591942713910252566844216883510983106007866516692071233043137318922547421"
        "5620302495581803094913110624590177406888394624128938633526464614177040468306987399",
        "-4805333568497027763527637498327425874259194271391025256684421688351098310600786651669207123304313731892254742"
        "15620302495581803094913110624590177406888394624128938633526464614177040468306987399",
        "4048293905596052205036948911452380394795846231788449",
        "-4048293905596052205036948911452380394795846231788449",
        "26995137345178218227830930364666340738",
        "-26995137345178218227830930364666340738",
        "77439744157126223098420165011222085804416453860655532363549008835880119258361152268326031275494275431757239176"
        "4052135170163899209038840031703432786259696586141227827701639190998818229513",
        "-7743974415712622309842016501122208580441645386065553236354900883588011925836115226832603127549427543175723917"
        "64052135170163899209038840031703432786259696586141227827701639190998818229513",
        "18762561208181880394479657197069746737270753294648933008217092757003616838536799737540224936022419848244051559"
        "923181261528435902887894811151076237",
        "-1876256120818188039447965719706974673727075329464893300821709275700361683853679973754022493602241984824405155"
        "9923181261528435902887894811151076237",
        "907239775827042770755661550314761787115062100342977397902609610238855670466824379",
        "-907239775827042770755661550314761787115062100342977397902609610238855670466824379",
        "752510106807455900379909618532778973994453687695730898309343615105390212836204453042377052183212876905061",
        "-752510106807455900379909618532778973994453687695730898309343615105390212836204453042377052183212876905061",
        "15943875914228757073613229708396251511313813781746417935514655101421594171270287026515138594661225851109829222"
        "92801583543059620610053622982905425511766811223211156471041084636387606630303692709955363035",
        "-1594387591422875707361322970839625151131381378174641793551465510142159417127028702651513859466122585110982922"
        "292801583543059620610053622982905425511766811223211156471041084636387606630303692709955363035",
        "23316150037708287470080374296114607254763375473373018965703611900047553929551418522455587001961482391010828529"
        "091929849671267100179126145618520750402550331537136654",
        "-2331615003770828747008037429611460725476337547337301896570361190004755392955141852245558700196148239101082852"
        "9091929849671267100179126145618520750402550331537136654",
        "20657060651923641466040511710182196008615093414352394224829198069498978122120473229557245828835913519262091053"
        "4498754440751275665591490740002481374496819362873621178489882031204314197626575326338703982006151642904",
        "-2065706065192364146604051171018219600861509341435239422482919806949897812212047322955724582883591351926209105"
        "34498754440751275665591490740002481374496819362873621178489882031204314197626575326338703982006151642904",
        "64632739363686102310668199833121081452653123828159756435580680576799270035485260582762183515021072594277553694"
        "79943577366072822898936305750395606132237139172959705532580834386879920169991826437921394316295238024250261032"
        "3",
        "-6463273936368610231066819983312108145265312382815975643558068057679927003548526058276218351502107259427755369"
        "47994357736607282289893630575039560613223713917295970553258083438687992016999182643792139431629523802425026103"
        "23",
        "58942141173442015950126797645589641130927625520889116720159052333027103960441703243715414208568841040553345983"
        "67021316170925735189388154466098024347724319589608720712151718555130412803886982549079273405151173911660701416"
        "83457342784",
        "-5894214117344201595012679764558964113092762552088911672015905233302710396044170324371541420856884104055334598"
        "36702131617092573518938815446609802434772431958960872071215171855513041280388698254907927340515117391166070141"
        "683457342784",
        "78879805619934569024599381571707822806614963415349200270284875054237164864359624372158647647863797008340316828"
        "01230075566711031485546050317918111709738570131973918711413971832982769500961742840162077354555539484857336031"
        "7456047893463046622890050301003010952433178967879125505419476694805185008787411114258",
        "-7887980561993456902459938157170782280661496341534920027028487505423716486435962437215864764786379700834031682"
        "80123007556671103148554605031791811170973857013197391871141397183298276950096174284016207735455553948485733603"
        "17456047893463046622890050301003010952433178967879125505419476694805185008787411114258",
        "23502781763641178064404023959903165549857567200280242514656186491195674181432757323176594593508102253721487854"
        "615955222259753262265267416938",
        "-2350278176364117806440402395990316554985756720028024251465618649119567418143275732317659459350810225372148785"
        "4615955222259753262265267416938",
        "40929713961077676350612389514348145196328209983942096909870545637418436054484606700987104086746267317854435898"
        "63083420200831460650205998268202400817871713941550981001100406724104229874004724492401265197190227007976225707"
        "38",
        "-4092971396107767635061238951434814519632820998394209690987054563741843605448460670098710408674626731785443589"
        "86308342020083146065020599826820240081787171394155098100110040672410422987400472449240126519719022700797622570"
        "738",
        "23333202714794325323697505",
        "-23333202714794325323697505",
        "88926553698672071141130629238070206100425021951043909308812007686747474756572535280975280230894876905612920792"
        "25978165253235362466038316552693404809297025637416397870091523057359995068959388428523523941783060025990613909"
        "2309559397593337924686035082341037174504874298230037865321327",
        "-8892655369867207114113062923807020610042502195104390930881200768674747475657253528097528023089487690561292079"
        "22597816525323536246603831655269340480929702563741639787009152305735999506895938842852352394178306002599061390"
        "92309559397593337924686035082341037174504874298230037865321327",
        "193216483164388919875865726156220378900478525465101761599275916110098513",
        "-193216483164388919875865726156220378900478525465101761599275916110098513",
        "44514792710581133411220118753518294788781740219343049022200884434262348379001695582632814020064669857333319776"
        "9902932812101243075968229955686369555029175781",
        "-4451479271058113341122011875351829478878174021934304902220088443426234837900169558263281402006466985733331977"
        "69902932812101243075968229955686369555029175781",
        "40472491542701510023624587707748733589786195473313922093155905613132635143884704232059881953973683226701513608"
        "04139123170075256538661575760858799813108608589160821418095581536611552482267761181607416277977640714330350281"
        "51035984348656570943456141740411122305727778772350559929918941",
        "-4047249154270151002362458770774873358978619547331392209315590561313263514388470423205988195397368322670151360"
        "80413912317007525653866157576085879981310860858916082141809558153661155248226776118160741627797764071433035028"
        "151035984348656570943456141740411122305727778772350559929918941",
        "15881033668267446564985922502808887168130126414945171534501886241573767046656582600501857191275522198094812554"
        "481448361027945717673462595782212036129626347287630493102505400",
        "-1588103366826744656498592250280888716813012641494517153450188624157376704665658260050185719127552219809481255"
        "4481448361027945717673462595782212036129626347287630493102505400",
        "2137415689988797072560582676089346590053122445",
        "-2137415689988797072560582676089346590053122445",
        "32379885018614858055486358918709113584544016677443013309344031455695937902194113230712740032222585470509307392"
        "5068652013957143959242670668925116774275979824",
        "-3237988501861485805548635891870911358454401667744301330934403145569593790219411323071274003222258547050930739"
        "25068652013957143959242670668925116774275979824",
        "17350810606345954422629715727627472872111821006931851792512284857724217543499693845969547633145401322364655799"
        "34054070025781791190054459943371066142237507464796539945362256062034304898373481811469056020850379277669339721"
        "28185498665420530967676198121700174",
        "-1735081060634595442262971572762747287211182100693185179251228485772421754349969384596954763314540132236465579"
        "93405407002578179119005445994337106614223750746479653994536225606203430489837348181146905602085037927766933972"
        "128185498665420530967676198121700174",
        "78355099355274385235041105626642472390321765441120677546321753788293394435411913702107288104186287888107050196"
        "021354011143759436476044341380451",
        "-7835509935527438523504110562664247239032176544112067754632175378829339443541191370210728810418628788810705019"
        "6021354011143759436476044341380451",
        "14082584100725485095810331470851521352703939751219746773401724408039845947212432002741091564650266209598267452"
        "042246073901010147451656273871799778680203026839107331149",
        "-1408258410072548509581033147085152135270393975121974677340172440803984594721243200274109156465026620959826745"
        "2042246073901010147451656273871799778680203026839107331149",
        "24517261112420136146444728670150708009543505931172100918457233583346279051218948710232624095195895889670632610"
        "46514660829821816464168656627289239433694932574140916666824",
        "-2451726111242013614644472867015070800954350593117210091845723358334627905121894871023262409519589588967063261"
        "046514660829821816464168656627289239433694932574140916666824",
        "20065158625055757494521923831526555875918181556943569250588125153526936260221797604217490757723244157360646025"
        "07310506234637148919551944791524424086237563148902506312499755319585154978651744156706388951037075685723849957"
        "6234680378947724748027600877684623953611544337343413268969959530489689129071097842283967",
        "-2006515862505575749452192383152655587591818155694356925058812515352693626022179760421749075772324415736064602"
        "50731050623463714891955194479152442408623756314890250631249975531958515497865174415670638895103707568572384995"
        "76234680378947724748027600877684623953611544337343413268969959530489689129071097842283967",
        "28777206289667365695250366429107729158622110259174103791768525915937869651223814830842427957007553061441325423"
        "01154682139822037092615315519",
        "-2877720628966736569525036642910772915862211025917410379176852591593786965122381483084242795700755306144132542"
        "301154682139822037092615315519",
        "3795119948781692972575431",
        "-3795119948781692972575431",
        "11763342310766484238661445429531882303154680828488649813309344279778036669586508895110273483503637518802770234"
        "66636478304251727331872750675842000822248148359761107548434375130161473442520167457132398431388002151362357198"
        "50541984478206795380204540097476184957279443",
        "-1176334231076648423866144542953188230315468082848864981330934427977803666958650889511027348350363751880277023"
        "46663647830425172733187275067584200082224814835976110754843437513016147344252016745713239843138800215136235719"
        "850541984478206795380204540097476184957279443",
        "60282005774648867422209642644332206066674697442014746338455870441249444174575736486217496602312777328326131572"
        "40821087790368844691241612",
        "-6028200577464886742220964264433220606667469744201474633845587044124944417457573648621749660231277732832613157"
        "240821087790368844691241612",
        "11178205801397007589415947487637819462550371101675827493841337567524498391904019442169129576506649935531296455"
        "00059553210763046702311000117537213965255288711420760932554622971299296197897",
        "-1117820580139700758941594748763781946255037110167582749384133756752449839190401944216912957650664993553129645"
        "500059553210763046702311000117537213965255288711420760932554622971299296197897",
        "894440058986616656162159749909897",
        "-894440058986616656162159749909897",
        "11758059164722075820822351813564721682251718268398125058702252593271794825804844012676212580269973081943948588"
        "059900469592179919885984813401833621636489306",
        "-1175805916472207582082235181356472168225171826839812505870225259327179482580484401267621258026997308194394858"
        "8059900469592179919885984813401833621636489306",
        "48260623373995703142149825869126942692445720237750683695954821352777035904885960923027672480964040682023869233"
        "94220191682869352274383288608899897218876777607827942602940209720298626006546253361083693227318856782309031541"
        "8748142243190815560532101505961513910649086153182477090526300312187507612192",
        "-4826062337399570314214982586912694269244572023775068369595482135277703590488596092302767248096404068202386923"
        "39422019168286935227438328860889989721887677760782794260294020972029862600654625336108369322731885678230903154"
        "18748142243190815560532101505961513910649086153182477090526300312187507612192",
        "15503204445695856065374231385100780313496380024849560916418328580422761514065363826458843925831669125137792498"
        "85385005695498160177420936178639818471562748513532347811665674363492140586326038303944955482214032498185208550"
        "20397602702298881144444526972675887598504476681959777521420493375210129749627151599",
        "-1550320444569585606537423138510078031349638002484956091641832858042276151406536382645884392583166912513779249"
        "88538500569549816017742093617863981847156274851353234781166567436349214058632603830394495548221403249818520855"
        "020397602702298881144444526972675887598504476681959777521420493375210129749627151599",
        "117",
        "-117",
        "31151175335",
        "-31151175335",
        "35374964788462894211615124919986334396217303170433399786403229831899783789349053619411986131305536842776505623"
        "49847500475949559258132562495620872884532756267460049703479343070390058482821335335802897319311558136589345319"
        "5729236094397513635",
        "-3537496478846289421161512491998633439621730317043339978640322983189978378934905361941198613130553684277650562"
        "34984750047594955925813256249562087288453275626746004970347934307039005848282133533580289731931155813658934531"
        "95729236094397513635",
        "11796859242834559349330645424007719279425086069437451547961817738176345052586077262730615110965711332407717403"
        "18435305083138827046086128064345080307430230321122495336957056346801393766807803750390916820100526013790667974"
        "0236981824660385730820591421051254923150011711560287985553001992949325890751138512",
        "-1179685924283455934933064542400771927942508606943745154796181773817634505258607726273061511096571133240771740"
        "31843530508313882704608612806434508030743023032112249533695705634680139376680780375039091682010052601379066797"
        "40236981824660385730820591421051254923150011711560287985553001992949325890751138512",
        "17064752289358050900297571484508935341830431822399304105261348960383946403276713634683141760439614786217160871"
        "03512583594247205970663310321228443897580620851942976189831167316975914668363981302089128234805209070329762374"
        "77074428855652406620425725105496",
        "-1706475228935805090029757148450893534183043182239930410526134896038394640327671363468314176043961478621716087"
        "10351258359424720597066331032122844389758062085194297618983116731697591466836398130208912823480520907032976237"
        "477074428855652406620425725105496",
        "52814786548659515200411631702693810801472773522444782570967922520487117106971145479165270060052881590913621879"
        "24",
        "-5281478654865951520041163170269381080147277352244478257096792252048711710697114547916527006005288159091362187"
        "924",
        "46129815309099089533998663194251988301640416513291168145890687064719832098372164421404379167497617395906966547"
        "21694691453248631167747384468652625616153898389404331335686814768720227658621123619760490072200457566243849427"
        "676890450504279708348832752925128591526859889728",
        "-4612981530909908953399866319425198830164041651329116814589068706471983209837216442140437916749761739590696654"
        "72169469145324863116774738446865262561615389838940433133568681476872022765862112361976049007220045756624384942"
        "7676890450504279708348832752925128591526859889728",
        "23094241327273022653044451950999420506014771354964805477758271955081278235223460074222216901450664362110908760"
        "5680440174002739494059492224354791764876753787909937534165450961813280650662325436679754051868455414",
        "-2309424132727302265304445195099942050601477135496480547775827195508127823522346007422221690145066436211090876"
        "05680440174002739494059492224354791764876753787909937534165450961813280650662325436679754051868455414",
        "528690042093345595850504247",
        "-528690042093345595850504247",
        "31537765402865704303346035013066893813209666897703115111579537190812318360668479310525622135277986713283804",
        "-31537765402865704303346035013066893813209666897703115111579537190812318360668479310525622135277986713283804",
        "15993627722607823659402379557774696658334418832659815148250580918319690393289449257261260362061514205043885138"
        "42915084045761",
        "-1599362772260782365940237955777469665833441883265981514825058091831969039328944925726126036206151420504388513"
        "842915084045761",
        "22018294718309903690696646065850459504307668740106965970119563766751726997751841635147532383629353261767951801"
        "68146662441562782901329023282108500169002017970752700316321096666863943141700707643203648265013741001179988886"
        "0384641536214437778644612376970907784011215",
        "-2201829471830990369069664606585045950430766874010696597011956376675172699775184163514753238362935326176795180"
        "16814666244156278290132902328210850016900201797075270031632109666686394314170070764320364826501374100117998888"
        "60384641536214437778644612376970907784011215",
        "139228864110515195216553853606798559408959520596931103855825362443397424774758172",
        "-139228864110515195216553853606798559408959520596931103855825362443397424774758172",
        "438362563301076",
        "-438362563301076",
        "53647771024044615840085595204709886173903277700242284218003616645974293465119936060797832161251445262274491102"
        "56585748779612141071747194497890175402658282794865245903384372699533688909947556628732671738709553608001259782"
        "87820421262971848425170065",
        "-5364777102404461584008559520470988617390327770024228421800361664597429346511993606079783216125144526227449110"
        "25658574877961214107174719449789017540265828279486524590338437269953368890994755662873267173870955360800125978"
        "287820421262971848425170065",
        "49886208730318904748428681555644009429297476100481812394167668857093548895925723585777189626077999941532714011"
        "5975996793571922312686472323161351487622438079274047587863856806852283080757914159158900221821",
        "-4988620873031890474842868155564400942929747610048181239416766885709354889592572358577718962607799994153271401"
        "15975996793571922312686472323161351487622438079274047587863856806852283080757914159158900221821",
        "39748549035011246773255625799719508809258723121323868893866335950890350778299648234468713055839849381450364454"
        "1315765003280501133111",
        "-3974854903501124677325562579971950880925872312132386889386633595089035077829964823446871305583984938145036445"
        "41315765003280501133111",
        "84971204365097177700474217164310632486275409083174420081479500697251808597293175207687443356278373167143510843"
        "16841625455992067859506697234610265264022957594481295380277929472748807438752323988418804843546513336276431808"
        "78756213653",
        "-8497120436509717770047421716431063248627540908317442008147950069725180859729317520768744335627837316714351084"
        "31684162545599206785950669723461026526402295759448129538027792947274880743875232398841880484354651333627643180"
        "878756213653",
        "31939357424827970804026114453315327769012263471221072258182242042519626638563054352273477096407109171097657867"
        "28770161758716419556840997747969641084657747370946154323934149396373950630893966283799952946185933374186160856"
        "7355869490150265338213466190360633042086859245316851129010609",
        "-3193935742482797080402611445331532776901226347122107225818224204251962663856305435227347709640710917109765786"
        "72877016175871641955684099774796964108465774737094615432393414939637395063089396628379995294618593337418616085"
        "67355869490150265338213466190360633042086859245316851129010609",
        "59075219415446517463799317419672630289040",
        "-59075219415446517463799317419672630289040",
        "61544636348619846793635535253831658039274289566061329628",
        "-61544636348619846793635535253831658039274289566061329628",
        "47039993623798236563116179343208507026310357248479681888556484881575814994392181189186094606034155971189947119"
        "55993736493844382420445150908317821345309220536771060200222794561232961570179101834952351401943902968040397437"
        "99564279602012304465862001339612585603213921336997140271860031180936085302533520084",
        "-4703999362379823656311617934320850702631035724847968188855648488157581499439218118918609460603415597118994711"
        "95599373649384438242044515090831782134530922053677106020022279456123296157017910183495235140194390296804039743"
        "799564279602012304465862001339612585603213921336997140271860031180936085302533520084",
        "4263018257494613144043214865050835432323223259669979976818528797978364036590648420",
        "-4263018257494613144043214865050835432323223259669979976818528797978364036590648420",
        "1030364360168890027890816549580",
        "-1030364360168890027890816549580",
        "792685786141580556314148491833336274593743818",
        "-792685786141580556314148491833336274593743818",
        "641446086312126555467875106303989084781624843543297958597183735580271101775752996685163",
        "-641446086312126555467875106303989084781624843543297958597183735580271101775752996685163",
        "5495154319842093167496249323058689957423462",
        "-5495154319842093167496249323058689957423462",
        "11789599234651983989010071854908355935861398361186377696491616773407893531669446332781833177934487486443699554"
        "32447906133546749652189011873493749873319167261114498916795310334499195951902848226375202300060238795536651870"
        "6202210024461852086754020196",
        "-1178959923465198398901007185490835593586139836118637769649161677340789353166944633278183317793448748644369955"
        "43244790613354674965218901187349374987331916726111449891679531033449919595190284822637520230006023879553665187"
        "06202210024461852086754020196",
        "11868320247536683221143642841170454891656934116545619261841381472878070159790790558172360288429121201484338870"
        "66735426588410267453747871695851628621591085545608803305288398000843694226568506226747178301754955176835941688"
        "6934474316919451518061351858590202914987178911670",
        "-1186832024753668322114364284117045489165693411654561926184138147287807015979079055817236028842912120148433887"
        "06673542658841026745374787169585162862159108554560880330528839800084369422656850622674717830175495517683594168"
        "86934474316919451518061351858590202914987178911670",
        "1284156757531040914593221",
        "-1284156757531040914593221",
        "95231568857363142768510299561297451526085131788706868017697591113084709961230887718511228589081322034448591529"
        "76097503444227519069060806081448518797562327844612222984531692130770",
        "-9523156885736314276851029956129745152608513178870686801769759111308470996123088771851122858908132203444859152"
        "976097503444227519069060806081448518797562327844612222984531692130770",
        "31415032545650652773467205308921957370624743383488073117109921420678201637023554362493982589097031342230335705"
        "038785983149366806922747914694551472092848890719761600241693293020110370962350805350",
        "-3141503254565065277346720530892195737062474338348807311710992142067820163702355436249398258909703134223033570"
        "5038785983149366806922747914694551472092848890719761600241693293020110370962350805350",
        "38540294830367981299370153716758943624066595675817723365819908936210186285351422767835324962411068698716556932"
        "780434832522209505361628036446058246936860795564022909013649",
        "-3854029483036798129937015371675894362406659567581772336581990893621018628535142276783532496241106869871655693"
        "2780434832522209505361628036446058246936860795564022909013649",
        "1489",
        "-1489",
        "2270684970894467473228397152522666196967234885",
        "-2270684970894467473228397152522666196967234885",
        "62359427042942695503123418949648760066259764657192862244998093521534679703519883819788822286963209152555874837"
        "8610334926140669245375114542239425712378426359715133474059991644743953906535538195465100677512751053",
        "-6235942704294269550312341894964876006625976465719286224499809352153467970351988381978882228696320915255587483"
        "78610334926140669245375114542239425712378426359715133474059991644743953906535538195465100677512751053",
        "60223901057086672916139687208371207252559034742838976658538850201068490068101652675647609676435807962967919811"
        "84951461623908691353741297021009163265125982617410333836875113496530323012621139843869815187924097740446046818"
        "6851886617548182773561840252412981638510923",
        "-6022390105708667291613968720837120725255903474283897665853885020106849006810165267564760967643580796296791981"
        "18495146162390869135374129702100916326512598261741033383687511349653032301262113984386981518792409774044604681"
        "86851886617548182773561840252412981638510923",
        "35208316409727847407800584568207598653111976107805141572339146815276269609601694157725717914424253508957230618"
        "0818322625093102190964224730315213843217203692079968682",
        "-3520831640972784740780058456820759865311197610780514157233914681527626960960169415772571791442425350895723061"
        "80818322625093102190964224730315213843217203692079968682",
        "25691471552657359430476066445368551254101367657032883011775288415063676982519517227779783558025322427932754627"
        "5273345112399482552434310216245805227544453571042746897560531287112979681556135355",
        "-2569147155265735943047606644536855125410136765703288301177528841506367698251951722777978355802532242793275462"
        "75273345112399482552434310216245805227544453571042746897560531287112979681556135355",
        "39298127124630851876665196059410807526654306800030829696195322196125591242763372333564860336075575658411825622"
        "99051203553436156356748939",
        "-3929812712463085187666519605941080752665430680003082969619532219612559124276337233356486033607557565841182562"
        "299051203553436156356748939",
        "1342865274232326934240128816495975896816628726930390134403022164244814040962732527145178443776536620876592577",
        "-134286527423232693424012881649597589681662872693039013440302216424481404096273252714517844377653662087659257"
        "7",
        "75482499101235806844482700363651520608393572186840116071510831",
        "-75482499101235806844482700363651520608393572186840116071510831",
        "15707933370647032058936272128733544643610067392126227502191953600957139113092165420227726240740387242329703219"
        "7476611916298599850639905615780935087993369908937",
        "-1570793337064703205893627212873354464361006739212622750219195360095713911309216542022772624074038724232970321"
        "97476611916298599850639905615780935087993369908937",
        "21096758435207806377330934948465784354053655",
        "-21096758435207806377330934948465784354053655",
        "72962027605667324484840888096831111062135942402382146003279773049832108007049417230916935672791154280882832193"
        "05211898160182",
        "-7296202760566732448484088809683111106213594240238214600327977304983210800704941723091693567279115428088283219"
        "305211898160182",
        "94737118476892447072784087606089841659041378934540699386335162247941552380696230088141100716785518477979820667"
        "73376077",
        "-9473711847689244707278408760608984165904137893454069938633516224794155238069623008814110071678551847797982066"
        "773376077",
        "424157689387860814675639",
        "-424157689387860814675639",
        "23119158450081759986038440582976209093499232837505365865879374343123777338447020496518077224754342837572679611"
        "77665307169760829875889028168476878787006491399930630338344642910500797043234542368361571429181649829252175786"
        "093011520179318",
        "-2311915845008175998603844058297620909349923283750536586587937434312377733844702049651807722475434283757267961"
        "17766530716976082987588902816847687878700649139993063033834464291050079704323454236836157142918164982925217578"
        "6093011520179318",
        "74548539487073557220326968093479867500276859338046876248826540472060313997",
        "-74548539487073557220326968093479867500276859338046876248826540472060313997",
        "11654322736763",
        "-11654322736763",
        "53007278098826078101002711940372616336",
        "-53007278098826078101002711940372616336",
        "79488890173950413261690334491844393856301694056413503617980571504653230048955",
        "-79488890173950413261690334491844393856301694056413503617980571504653230048955",
        "408713674815985937940894525901270256192656939969702057871",
        "-408713674815985937940894525901270256192656939969702057871",
        "79389647406823836766814123471902291142518602042384657840638675224506455535769544540818893072683736361551906557"
        "1656957027286833070564842125230923415365473419",
        "-7938964740682383676681412347190229114251860204238465784063867522450645553576954454081889307268373636155190655"
        "71656957027286833070564842125230923415365473419",
        "174808944301193943551146900431326706416195767876909997906726651518289372951",
        "-174808944301193943551146900431326706416195767876909997906726651518289372951",
        "15518425275704712437859509478557555507942868590674242179846381629609574039655947926978374551659365245896461352"
        "38066314972683285055338230328533626186917681311310445294400252614455929770114326352262533125081627103205075674"
        "3914895178056748128568613436826595",
        "-1551842527570471243785950947855755550794286859067424217984638162960957403965594792697837455165936524589646135"
        "23806631497268328505533823032853362618691768131131044529440025261445592977011432635226253312508162710320507567"
        "43914895178056748128568613436826595",
        "70458469790640719970859009237810302197279143120275782495777577407278474024633432000508818151200296331076178058"
        "0704786814454975765",
        "-7045846979064071997085900923781030219727914312027578249577757740727847402463343200050881815120029633107617805"
        "80704786814454975765",
        "65760770487889506754334369489922843033691263152824192730269677531959090740219992385251283311246194763106512902"
        "81255364630672983832120710178771174148003695765453719757363209788975303130937033175919261265735815940160179990"
        "87405971954224745504107290022634832416486976440197266126685274050284770811156390509",
        "-6576077048788950675433436948992284303369126315282419273026967753195909074021999238525128331124619476310651290"
        "28125536463067298383212071017877117414800369576545371975736320978897530313093703317591926126573581594016017999"
        "087405971954224745504107290022634832416486976440197266126685274050284770811156390509",
        "7494538701531220",
        "-7494538701531220",
        "73007275608052946875390128030429959092384497130324527692296678838690872096208814003058754389622188139433863609"
        "70483979638425963787311826059269116699436735359914333529525984293006337531416122388956292154685035813667508959"
        "604499191395591577891525195678171",
        "-7300727560805294687539012803042995909238449713032452769229667883869087209620881400305875438962218813943386360"
        "97048397963842596378731182605926911669943673535991433352952598429300633753141612238895629215468503581366750895"
        "9604499191395591577891525195678171",
        "25550458769851844531271792271293069108119779256141109091605679825763711473141786548271458465104381182985149281"
        "82429729294705067663336161074501225808992729693266481341194160809892010121637717677875204851555947573005551859"
        "54280304839051723173371630921394024027714555984796981691309",
        "-2555045876985184453127179227129306910811977925614110909160567982576371147314178654827145846510438118298514928"
        "18242972929470506766333616107450122580899272969326648134119416080989201012163771767787520485155594757300555185"
        "954280304839051723173371630921394024027714555984796981691309",
        "1957270404535432491577732407654814296272924990076105665080976425316855184394075979033347631859",
        "-1957270404535432491577732407654814296272924990076105665080976425316855184394075979033347631859",
        "40366052077088902605214536385888399396840856787691996312933937718435400861814780396887704308731895255553230175"
        "77403638645629717609027114275001266035970118582414773795686843424232228287855696172516932878737362336512733851"
        "83220731182322820758659074766543835657767799241434709242669340338048971",
        "-4036605207708890260521453638588839939684085678769199631293393771843540086181478039688770430873189525555323017"
        "57740363864562971760902711427500126603597011858241477379568684342423222828785569617251693287873736233651273385"
        "183220731182322820758659074766543835657767799241434709242669340338048971",
        "1360462270574406",
        "-1360462270574406",
        "41324796834060083364741632465744604155931640433410301186397363904266930128665463361513275697352082859944863112"
        "972305377171961651196393476069297383272360",
        "-4132479683406008336474163246574460415593164043341030118639736390426693012866546336151327569735208285994486311"
        "2972305377171961651196393476069297383272360",
        "3704475702528052685702177087226789799951985298635254026584051739803799717979",
        "-3704475702528052685702177087226789799951985298635254026584051739803799717979",
        "15324664249401045013727127578266722880923015582445744082290396086739217665923549238159714472241913755511109729"
        "288179218537980252473553017573593867710189",
        "-1532466424940104501372712757826672288092301558244574408229039608673921766592354923815971447224191375551110972"
        "9288179218537980252473553017573593867710189",
        "99171389588566044536119556663012026855203333719951912919454550312132565831030932159977335699854606746917634585"
        "8459212673467904704287664190684736527585420239571896710231",
        "-9917138958856604453611955666301202685520333371995191291945455031213256583103093215997733569985460674691763458"
        "58459212673467904704287664190684736527585420239571896710231",
        "496917928889709928816019707237559067993121139550552680620307451932907944813916325593269613319259002416192",
        "-496917928889709928816019707237559067993121139550552680620307451932907944813916325593269613319259002416192",
        "54207803199396991552120327759790622799002809113434200516295128091050598422403455099257625770523349717258795726"
        "74586223682520124367213762780782010484201065072155930114824432335178466411605479995327050114745584339793378334"
        "895820002004268553531081904844570983717097867410603089",
        "-5420780319939699155212032775979062279900280911343420051629512809105059842240345509925762577052334971725879572"
        "67458622368252012436721376278078201048420106507215593011482443233517846641160547999532705011474558433979337833"
        "4895820002004268553531081904844570983717097867410603089",
        "34178515956045799076849256172156569827315750483663840127186371829050429609564171778221768139311136758783705861"
        "24212264100331309649305710342092790910563209553071031744688852100716364612376224288460923953426953156559929151"
        "8871943322912836596141732912619557997670259415580841015283",
        "-3417851595604579907684925617215656982731575048366384012718637182905042960956417177822176813931113675878370586"
        "12421226410033130964930571034209279091056320955307103174468885210071636461237622428846092395342695315655992915"
        "18871943322912836596141732912619557997670259415580841015283",
        "24753103731553244306801885710094553322976800783421479907592940309642834383335499833992007826858595009726122",
        "-24753103731553244306801885710094553322976800783421479907592940309642834383335499833992007826858595009726122",
        "13036583518227793584007672651904049142584685016714141157148524815754044403310557269915324248572355298182874640"
        "81864",
        "-1303658351822779358400767265190404914258468501671414115714852481575404440331055726991532424857235529818287464"
        "081864",
        "82442525420",
        "-82442525420",
        "40181847350075911374014072545070982",
        "-40181847350075911374014072545070982",
        "6331081104259962585725418329411543440752124680199",
        "-6331081104259962585725418329411543440752124680199",
        "66944462599125789706205699503742629365238860203028284326957302621993628997421534959287490740671508999576510858"
        "36089366172842700691880053404813792590123887290651988041821124916518980403356900160034892647656002819225694382"
        "56615076042625367641",
        "-6694446259912578970620569950374262936523886020302828432695730262199362899742153495928749074067150899957651085"
        "83608936617284270069188005340481379259012388729065198804182112491651898040335690016003489264765600281922569438"
        "256615076042625367641",
        "11686751035925568041632404438831359915758518148616601073033109661607441708500367269113752874835972930986581961"
        "42018318809369957616827451967868069658172182991177709289250815148540710360498467949152008438530805196222119517"
        "692659923705203865993818359838900924606163081858543",
        "-1168675103592556804163240443883135991575851814861660107303310966160744170850036726911375287483597293098658196"
        "14201831880936995761682745196786806965817218299117770928925081514854071036049846794915200843853080519622211951"
        "7692659923705203865993818359838900924606163081858543",
        "24965660052490305148091066857762676570515986273917003531254169896386850213082424041848267526929765289905822074"
        "13089494945",
        "-2496566005249030514809106685776267657051598627391700353125416989638685021308242404184826752692976528990582207"
        "413089494945",
        "75831002519613645538052701409851076434071446092420445852577692671",
        "-75831002519613645538052701409851076434071446092420445852577692671",
        "1595257514333333836407007696922732712451830781457969960247677871324618039799",
        "-1595257514333333836407007696922732712451830781457969960247677871324618039799",
        "2352103706291595728734823852677068972089963637096939637892631185119057636184628093243",
        "-2352103706291595728734823852677068972089963637096939637892631185119057636184628093243",
        "55150603036064305927003551612930888862894407146543079948823875920053285006001048840253371944560550042245523051"
        "895932284432859",
        "-5515060303606430592700355161293088886289440714654307994882387592005328500600104884025337194456055004224552305"
        "1895932284432859",
        "18365228534419886512702023573567171672628211957466384991481175312030679838654953519466397998394650178593756960"
        "0701888628541389188176220321121981286091051",
        "-1836522853441988651270202357356717167262821195746638499148117531203067983865495351946639799839465017859375696"
        "00701888628541389188176220321121981286091051",
        "1670967627370678916184944999086",
        "-1670967627370678916184944999086",
        "1779553803107116970428487453385844908445190212603430402358107740295247",
        "-1779553803107116970428487453385844908445190212603430402358107740295247",
        "163081585689520939847508610298505981110843",
        "-163081585689520939847508610298505981110843",
        "24608823059620600828775541561806855624217762717902459681958610060078155650689789569089307408156194776319918700"
        "684027035605476736967141308737778808097438",
        "-2460882305962060082877554156180685562421776271790245968195861006007815565068978956908930740815619477631991870"
        "0684027035605476736967141308737778808097438",
        "17622954090999134868099910828746192147589081251108622797267836438214913243762838031072847082883212972735573584"
        "85280494670235616572933594635090788098129815008242907222722201745257896641377882190604778878208386909547290614"
        "22727025173596051655147380497411055372159528861310774057097642760262454",
        "-1762295409099913486809991082874619214758908125110862279726783643821491324376283803107284708288321297273557358"
        "48528049467023561657293359463509078809812981500824290722272220174525789664137788219060477887820838690954729061"
        "422727025173596051655147380497411055372159528861310774057097642760262454",
        "15216798293128514565360263618593350137805578386867384666873991287099264368473948715709768405037053081257058737"
        "92672378389916115357657382793749503126640771533338992032259981620506047817865492352874670892991966609760209061"
        "301594191537869902100817987599206558753487441796712670736855202929172147294",
        "-1521679829312851456536026361859335013780557838686738466687399128709926436847394871570976840503705308125705873"
        "79267237838991611535765738279374950312664077153333899203225998162050604781786549235287467089299196660976020906"
        "1301594191537869902100817987599206558753487441796712670736855202929172147294",
        "41576963669994825446058750191620168562825886652425784719721564133425800752704166750188595865113008695078482735"
        "92737229363773252760313860357749814761595582127449880857952033970115380383676900743584438652262171904692777471"
        "245621134891056589732734422433379524779439127971588536170244050150621694478",
        "-4157696366999482544605875019162016856282588665242578471972156413342580075270416675018859586511300869507848273"
        "59273722936377325276031386035774981476159558212744988085795203397011538038367690074358443865226217190469277747"
        "1245621134891056589732734422433379524779439127971588536170244050150621694478",
        "10804906729135098618005363513207735252913176915696741703776579764983324903333538599551755225482014626486486194"
        "81614475899104059632553936657464424434357970937863187647621979084401315431140833788114037982",
        "-1080490672913509861800536351320773525291317691569674170377657976498332490333353859955175522548201462648648619"
        "481614475899104059632553936657464424434357970937863187647621979084401315431140833788114037982",
        "31949064363199247061678356456589488260792022905347904605765422216695128251131416472111077815951538425087041768"
        "37984748167835595231049849647151228364465638129922085890581512323653",
        "-3194906436319924706167835645658948826079202290534790460576542221669512825113141647211107781595153842508704176"
        "837984748167835595231049849647151228364465638129922085890581512323653",
        "66347107100300795802324266184385521196001191250641925506321442631467978776436571080979857829987956896197464196"
        "70782464100763296581048279199832393229943171657062221540851741403786520195173457267631419673828723425424752053"
        "1646927798844",
        "-6634710710030079580232426618438552119600119125064192550632144263146797877643657108097985782998795689619746419"
        "67078246410076329658104827919983239322994317165706222154085174140378652019517345726763141967382872342542475205"
        "31646927798844",
        "11755070349326455201",
        "-11755070349326455201",
        "15665104357841450682419449843062870904264079220994283469000666344546924190821945701140837464120789665270096371"
        "7365255757469753081082784",
        "-1566510435784145068241944984306287090426407922099428346900066634454692419082194570114083746412078966527009637"
        "17365255757469753081082784",
        "6564614203586776498688508944538260136293893809517937442849470545503761844",
        "-6564614203586776498688508944538260136293893809517937442849470545503761844",
        "59896211505485841082173184247141698828366816953932247906605875178982728710430443415546594778017352758242389942"
        "1590786844022599493768874809775192652719882115272582161354987",
        "-5989621150548584108217318424714169882836681695393224790660587517898272871043044341554659477801735275824238994"
        "21590786844022599493768874809775192652719882115272582161354987",
        "1444350866160610767970149895811427555021869076312848267766341148779654041237225100804339861301737435880750082"
        "4",
        "-1444350866160610767970149895811427555021869076312848267766341148779654041237225100804339861301737435880750082"
        "4",
        "39256841936111992",
        "-39256841936111992",
        "22003604980409010500616552575366573651583935479333537954768716122155414073009794841075971673796002258058407019"
        "82416470580167215580893968138277084668529234266013140607512259137450520082736548165952183404418578036511296811"
        "8493953141135082476859603163146563",
        "-2200360498040901050061655257536657365158393547933353795476871612215541407300979484107597167379600225805840701"
        "98241647058016721558089396813827708466852923426601314060751225913745052008273654816595218340441857803651129681"
        "18493953141135082476859603163146563",
        "892612825794032675237656399315067134384177542558409873295423125742291209107349193521326932311978865",
        "-892612825794032675237656399315067134384177542558409873295423125742291209107349193521326932311978865",
        "124621",
        "-124621",
        "39935862547719441432334200243323687785328282085889753818085154826607463592957499184719152632875679930608636031"
        "007549318604365",
        "-3993586254771944143233420024332368778532828208588975381808515482660746359295749918471915263287567993060863603"
        "1007549318604365",
        "53150384435463",
        "-53150384435463",
        "50386173651404628811676234879001137921341272350182665763348667038475632605487241327385809363938677696699992691"
        "23356358833922994762144381270134211004782972194957315491988474542647182488355728455727224128393875804308265676"
        "177706683756178477181259888932449640561270717525443984031839",
        "-5038617365140462881167623487900113792134127235018266576334866703847563260548724132738580936393867769669999269"
        "12335635883392299476214438127013421100478297219495731549198847454264718248835572845572722412839387580430826567"
        "6177706683756178477181259888932449640561270717525443984031839",
        "18681375094308610932506726878974665535026964461038388",
        "-18681375094308610932506726878974665535026964461038388",
        "16944909610160508211188634033371606066219453740459866836350967338910676604676651149773651730294392369244934357"
        "15113229950328428294138767438612886428848619529462540214870987656585503501640006260787493433146977269874730836"
        "153316545758154447988098965049",
        "-1694490961016050821118863403337160606621945374045986683635096733891067660467665114977365173029439236924493435"
        "71511322995032842829413876743861288642884861952946254021487098765658550350164000626078749343314697726987473083"
        "6153316545758154447988098965049",
        "34981000632270288897102343437813403379909519445061202916917950066646896121823399718762441640573618996405513221"
        "104482936830650441434933771175014497076492252938974657476531072878259814088155492254761929",
        "-3498100063227028889710234343781340337990951944506120291691795006664689612182339971876244164057361899640551322"
        "1104482936830650441434933771175014497076492252938974657476531072878259814088155492254761929",
        "68186095594637277569008966718516358384203015123161693897355580993692840848969688",
        "-68186095594637277569008966718516358384203015123161693897355580993692840848969688",
        "11341267029088195662290082553130537603894443893225164154355391412339197541934259519924161069298428960808725248"
        "76962976885893778825250951315557865558643443244064361902243653517585491772912650759627537475187929799073482588"
        "432081",
        "-1134126702908819566229008255313053760389444389322516415435539141233919754193425951992416106929842896080872524"
        "87696297688589377882525095131555786555864344324406436190224365351758549177291265075962753747518792979907348258"
        "8432081",
        "1219660173804105678519644769228717229961",
        "-1219660173804105678519644769228717229961",
        "93377882349864727971557986686337204326523350989557232161108275392225607910465807588963595126840810237196295201"
        "91135356937552064341414985563338865755044029781700472823138498290646709782655770432472849",
        "-9337788234986472797155798668633720432652335098955723216110827539222560791046580758896359512684081023719629520"
        "191135356937552064341414985563338865755044029781700472823138498290646709782655770432472849",
        "15042400859270803417325981011347593044081098933587962846942792537003475805037322899416660260665738140067096858"
        "8175849346743433462784970176019171026242734",
        "-1504240085927080341732598101134759304408109893358796284694279253700347580503732289941666026066573814006709685"
        "88175849346743433462784970176019171026242734",
        "10709102135708711290774115917568703434210917471089837954174155027939142290457621570052339242896415391737492196"
        "297186964273273691467020576606",
        "-1070910213570871129077411591756870343421091747108983795417415502793914229045762157005233924289641539173749219"
        "6297186964273273691467020576606",
        "59079103528212281718778674101288111466207808434403762015564505541564469769343289770324090876685575769990235010"
        "6663298",
        "-5907910352821228171877867410128811146620780843440376201556450554156446976934328977032409087668557576999023501"
        "06663298",
        "66448067690732736645335058285396669557548320847598833927323557681421914526956851893502317019352192129315295007"
        "67858294148963537439795792593286239876735316935797953104882",
        "-6644806769073273664533505828539666955754832084759883392732355768142191452695685189350231701935219212931529500"
        "767858294148963537439795792593286239876735316935797953104882",
        "17651138780568807371885539407284175044350908558988940454708454468333927052270973652515293601188565923261853021"
        "62170421133702365954681105482434084260327157065750573695038934681709610685806324129989888531430839455108009667"
        "19",
        "-1765113878056880737188553940728417504435090855898894045470845446833392705227097365251529360118856592326185302"
        "16217042113370236595468110548243408426032715706575057369503893468170961068580632412998988853143083945510800966"
        "719",
        "18197814169943971748763655537459580789924675680558018542859068281859940671016292870607058355",
        "-18197814169943971748763655537459580789924675680558018542859068281859940671016292870607058355",
        "53665744969332986906645019910160121106654070883148709396576439910412784742262054480460348",
        "-53665744969332986906645019910160121106654070883148709396576439910412784742262054480460348",
        "15114701057818447666738431676226302502804615316350076959331191793491140183426763779197478527183420304400143976"
        "23156680244273283819073086650464026990100610503029155070506230512185755549539789908881312524805018371582499635"
        "7342602508",
        "-1511470105781844766673843167622630250280461531635007695933119179349114018342676377919747852718342030440014397"
        "62315668024427328381907308665046402699010061050302915507050623051218575554953978990888131252480501837158249963"
        "57342602508",
        "45386840878470495847601029287589319516630471363656903179696525706823515955405762281490359485474565285459975892"
        "04036236408244581413584178489307193893093917026883317801237483886776457347545442242",
        "-4538684087847049584760102928758931951663047136365690317969652570682351595540576228149035948547456528545997589"
        "204036236408244581413584178489307193893093917026883317801237483886776457347545442242",
        "68104327977018907402564677909296985240865850899633815987571",
        "-68104327977018907402564677909296985240865850899633815987571",
        "21126389218307474702937983111939394337442364463717300558898463056361786715220551813192286109604739592089468027"
        "63953516094926616540545518696931345168770911112734759685152358018055814701922044571794931458854277372904475512"
        "7625855190216933115799293871340",
        "-2112638921830747470293798311193939433744236446371730055889846305636178671522055181319228610960473959208946802"
        "76395351609492661654054551869693134516877091111273475968515235801805581470192204457179493145885427737290447551"
        "27625855190216933115799293871340",
        "78222020599461507025837080263377239508386033815939450849751163859949403589369059725826445373571398499131861482"
        "443466775202688633343807807754044978711136865112845737811903231211872791854642958065042325855161499335",
        "-7822202059946150702583708026337723950838603381593945084975116385994940358936905972582644537357139849913186148"
        "2443466775202688633343807807754044978711136865112845737811903231211872791854642958065042325855161499335",
        "4085759411276713693098232266986821269735231020974977020052575836176404619187789208196423060444205",
        "-4085759411276713693098232266986821269735231020974977020052575836176404619187789208196423060444205",
        "1184210350766462097978915832676647869625660103053116596342",
        "-1184210350766462097978915832676647869625660103053116596342",
        "19453922210480283598329220541471443452405876275688532738070670132171865574543949271604816605992793524171914942"
        "8879885478",
        "-1945392221048028359832922054147144345240587627568853273807067013217186557454394927160481660599279352417191494"
        "28879885478",
        "30222594649233474616184414062584241640624781260420002527458124774518422264772496412037150827376649700990566242"
        "5211",
        "-3022259464923347461618441406258424164062478126042000252745812477451842226477249641203715082737664970099056624"
        "25211",
        "28866482602752218187265274692665814018194886187165103251546083935605515506785082873738653268219928502362268",
        "-28866482602752218187265274692665814018194886187165103251546083935605515506785082873738653268219928502362268",
        "55449520790500152400771577009403202436595504350145740414213486653969355798166115078885745933850737979114791606"
        "63545693602347256422370826097076074812916781822541849687962368590784552937977886205",
        "-5544952079050015240077157700940320243659550435014574041421348665396935579816611507888574593385073797911479160"
        "663545693602347256422370826097076074812916781822541849687962368590784552937977886205",
        "32371045226808759198284530731950137613237231635191810070889469067894177625963561852822771016478625754042705407"
        "14302825718603545232798472150121073328177958236392129099245151788249232346731490864625966365903503275397233107"
        "98213754665082582892561015344012",
        "-3237104522680875919828453073195013761323723163519181007088946906789417762596356185282277101647862575404270540"
        "71430282571860354523279847215012107332817795823639212909924515178824923234673149086462596636590350327539723310"
        "798213754665082582892561015344012",
        "62981782148048094823829037408932619973092541260837865390133445214572182020895796654801986085664431091511647594"
        "09311083172285986019510870966646266562147239668466233708302275847273212515270194723859620577435475775917236877"
        "537636439092304144350",
        "-6298178214804809482382903740893261997309254126083786539013344521457218202089579665480198608566443109151164759"
        "40931108317228598601951087096664626656214723966846623370830227584727321251527019472385962057743547577591723687"
        "7537636439092304144350",
        "57702471047035203296542750045005906795943733786197190611717887272999660038752306294323912911753593590831073155"
        "8466601208272240830153365070900204066680943610473920336450708951789975218349225167580113063050191",
        "-5770247104703520329654275004500590679594373378619719061171788727299966003875230629432391291175359359083107315"
        "58466601208272240830153365070900204066680943610473920336450708951789975218349225167580113063050191",
        "37972747755906620986262153",
        "-37972747755906620986262153",
        "18382969811522945555587694297900351451664012888029517924392171669228384561291443740543530761273366089472780082"
        "4835948",
        "-1838296981152294555558769429790035145166401288802951792439217166922838456129144374054353076127336608947278008"
        "24835948",
        "24238329596673601182570647027376090234258006321928367234307753365911007571440729358695575833425003273504881173"
        "94557246526227000890820814931134670064874494870718496008517213657614840456624436847012780602721278103167235601"
        "948187645617975091973272873241569047573971620372584048698612150640",
        "-2423832959667360118257064702737609023425800632192836723430775336591100757144072935869557583342500327350488117"
        "39455724652622700089082081493113467006487449487071849600851721365761484045662443684701278060272127810316723560"
        "1948187645617975091973272873241569047573971620372584048698612150640",
        "36898270138495355856194119522038262473324263676472608206788839703277969021234405770754507282172700074914702506"
        "03087878349241859733492652613679",
        "-3689827013849535585619411952203826247332426367647260820678883970327796902123440577075450728217270007491470250"
        "603087878349241859733492652613679",
        "38998054937697595881540875647042048333681659113425435564641134367164935592905762620334835531916327661633470289"
        "66951051175780786563050623532827322291842111711128155687307025484444131281437279941082041079798872260176164274"
        "3512387994633124078",
        "-3899805493769759588154087564704204833368165911342543556464113436716493559290576262033483553191632766163347028"
        "96695105117578078656305062353282732229184211171112815568730702548444413128143727994108204107979887226017616427"
        "43512387994633124078",
        "1742133972499057105001733325633478018605566678002165515479191311988758932166961086848659714709",
        "-1742133972499057105001733325633478018605566678002165515479191311988758932166961086848659714709",
        "25535597609396731322900789197681554229437525798979893565031823826722523313775949119575982029626669028819615947"
        "58670198463065653145968650999812730247666",
        "-2553559760939673132290078919768155422943752579897989356503182382672252331377594911957598202962666902881961594"
        "758670198463065653145968650999812730247666",
        "51684745772714675394936241781816223514919452679364520537119434050698905337439734233644472369565180889405426257"
        "28878241901008257989409579984722936242119368711398126635501480276230809573980833452939223485348553796798889031"
        "3769779739241401223407407962126345943032536670110549434751102",
        "-5168474577271467539493624178181622351491945267936452053711943405069890533743973423364447236956518088940542625"
        "72887824190100825798940957998472293624211936871139812663550148027623080957398083345293922348534855379679888903"
        "13769779739241401223407407962126345943032536670110549434751102",
        "67271211246236035191051812059412004060143694860614805822230019855924473892226634104236030565145064272447556127"
        "1288385956130680220169715",
        "-6727121124623603519105181205941200406014369486061480582223001985592447389222663410423603056514506427244755612"
        "71288385956130680220169715",
        "81344707081932425103707958126552658029290757637247772920433840495558441022247893459361963093531422206300325299"
        "3694281837026881675600656782635846343833",
        "-8134470708193242510370795812655265802929075763724777292043384049555844102224789345936196309353142220630032529"
        "93694281837026881675600656782635846343833",
        "11176102251944190653375688945134937765648032264327430809860225214062960902764097391496560729539837987545469914"
        "02130235309864912523411568994",
        "-1117610225194419065337568894513493776564803226432743080986022521406296090276409739149656072953983798754546991"
        "402130235309864912523411568994",
        "54306983641232120685850754812687679873466315381427348676538013927626387380179070467333206768501131364932160162"
        "45401664600200623071405982056011352933491085440102111154333302200815379582017223546885814610335150231171711402"
        "5204496145038",
        "-5430698364123212068585075481268767987346631538142734867653801392762638738017907046733320676850113136493216016"
        "24540166460020062307140598205601135293349108544010211115433330220081537958201722354688581461033515023117171140"
        "25204496145038",
        "113450443712297816016750119935548807386514765087946158026225637996838314569438356054721778395168",
        "-113450443712297816016750119935548807386514765087946158026225637996838314569438356054721778395168",
        "7352437924947754601546368441398130",
        "-7352437924947754601546368441398130",
        "98462782865581011026404612302777306139392708682273077805709356002690937788223769928930087800141417416471037760"
        "48800092788896154696011762350215865588521108549",
        "-9846278286558101102640461230277730613939270868227307780570935600269093778822376992893008780014141741647103776"
        "048800092788896154696011762350215865588521108549",
        "73473583275712621559167315389071668112406649781987949641633299346855217310106910560443921944813054763213555679"
        "810164708505",
        "-7347358327571262155916731538907166811240664978198794964163329934685521731010691056044392194481305476321355567"
        "9810164708505",
        "44337393529749818041445106472308772039346354808448275796454672077580119659002042203928900642842510640740800196"
        "651911559238276834896411685658708100385336014325",
        "-4433739352974981804144510647230877203934635480844827579645467207758011965900204220392890064284251064074080019"
        "6651911559238276834896411685658708100385336014325",
        "30290576565262715548422306781612400507064584717664533297114135816075579272505882215172184243253115085559830654"
        "79955684772259815134067055583713776773155106422220131994155338255582516687249210697344355756374535219768311432"
        "253647445765860280496088041768667890441415297183",
        "-3029057656526271554842230678161240050706458471766453329711413581607557927250588221517218424325311508555983065"
        "47995568477225981513406705558371377677315510642222013199415533825558251668724921069734435575637453521976831143"
        "2253647445765860280496088041768667890441415297183",
        "73089610356652760773075332783681924592293135429218106420403592135780008409045056046042901725253961654380371364"
        "05824583419625890482672910803083696812713046188613518629712904657091989125753673544631234278084377840402409077"
        "93877567792057788579265909741136",
        "-7308961035665276077307533278368192459229313542921810642040359213578000840904505604604290172525396165438037136"
        "40582458341962589048267291080308369681271304618861351862971290465709198912575367354463123427808437784040240907"
        "793877567792057788579265909741136",
        "87597248082134295690813735079767298614106891467996379151725950603695799216770489882615076367487973740420413615"
        "0",
        "-8759724808213429569081373507976729861410689146799637915172595060369579921677048988261507636748797374042041361"
        "50",
        "80978095866121182143792129768500985270760294511412625411940522384234727394805988434574920055266468176140927390"
        "50452879567471020201468887751608292887019339976336113382106065666041428911194550087004555474923917960690139228"
        "1466574470956468260058934",
        "-8097809586612118214379212976850098527076029451141262541194052238423472739480598843457492005526646817614092739"
        "05045287956747102020146888775160829288701933997633611338210606566604142891119455008700455547492391796069013922"
        "81466574470956468260058934",
        "51083661926112832446225293320985888860376709120445452121759422135334081832266470110593055814994292848487305754"
        "16013640342256910485443191764062474694987448384264155646101960915742145430768592056025304400156363995432483639"
        "209748602875976799644331086294285921358845745557709942066403846",
        "-5108366192611283244622529332098588886037670912044545212175942213533408183226647011059305581499429284848730575"
        "41601364034225691048544319176406247469498744838426415564610196091574214543076859205602530440015636399543248363"
        "9209748602875976799644331086294285921358845745557709942066403846",
        "69301801249643561472202075914222790162083716853600995982387464922831223791721914931275950098443218102245237348"
        "15981086376030176488602168657385920504832784693281301596520980175713179280297526196841775",
        "-6930180124964356147220207591422279016208371685360099598238746492283122379172191493127595009844321810224523734"
        "815981086376030176488602168657385920504832784693281301596520980175713179280297526196841775",
        "12719598413976010316905883951490317474600076982372385198118112745217530507089025929760539996530692314918838683"
        "1728624922603033165495625460062407066507409867399121450024",
        "-1271959841397601031690588395149031747460007698237238519811811274521753050708902592976053999653069231491883868"
        "31728624922603033165495625460062407066507409867399121450024",
        "76685671986042438106859587978144308654001871219812689303461434692557717083869673746513014037492610257184663974"
        "4916246",
        "-7668567198604243810685958797814430865400187121981268930346143469255771708386967374651301403749261025718466397"
        "44916246",
        "24452524790653436824651691432192056396622748",
        "-24452524790653436824651691432192056396622748",
        "21600696784921267417096322615448095147085787610512586576154030214298480866233496998058741115961394009177458631"
        "30102046718423525951631758558733160870800965056788960439040869125755991150684947532660179586336833933380960428"
        "3115447728657967640020590611529",
        "-2160069678492126741709632261544809514708578761051258657615403021429848086623349699805874111596139400917745863"
        "13010204671842352595163175855873316087080096505678896043904086912575599115068494753266017958633683393338096042"
        "83115447728657967640020590611529",
        "3758893374497950117544956548495424355416942972081749559738750",
        "-3758893374497950117544956548495424355416942972081749559738750",
        "13940245287953122796730502609337337493196066172904804799204685070493311202736347498958733428194939819442469509"
        "7699435389253833391313981068405251271500306551642365788",
        "-1394024528795312279673050260933733749319606617290480479920468507049331120273634749895873342819493981944246950"
        "97699435389253833391313981068405251271500306551642365788",
        "25612506870374484873779089622294846964717659760278221279975070009760319283018786412097109135597197982352674303"
        "35619152747596488541951787815427298001586734890066220420991849464359413694527814102742915274358365905024467955"
        "1461363259179124592558207169009059175419818764353589040423929215554316106",
        "-2561250687037448487377908962229484696471765976027822127997507000976031928301878641209710913559719798235267430"
        "33561915274759648854195178781542729800158673489006622042099184946435941369452781410274291527435836590502446795"
        "51461363259179124592558207169009059175419818764353589040423929215554316106",
        "2947281537862409310348470927599528845929360328199550369835553099926787046871370053629653311891644595607839493",
        "-294728153786240931034847092759952884592936032819955036983555309992678704687137005362965331189164459560783949"
        "3",
        "52383700984739281092615930224014231415340053229721910174310198296405193893748206285848734262998107045195542648"
        "40639788753962805520465217577654353515132848032321812308255870691241084866912560646162061587045231920247690379"
        "479011365117594385434098375615768143923448693726900625714250700557084631365841487720",
        "-5238370098473928109261593022401423141534005322972191017431019829640519389374820628584873426299810704519554264"
        "84063978875396280552046521757765435351513284803232181230825587069124108486691256064616206158704523192024769037"
        "9479011365117594385434098375615768143923448693726900625714250700557084631365841487720",
        "12442661493742591574470274906943075194519541250480406451734421223577085372382129292566795701869646895013888531"
        "78572827388521951856323623752272069350017007174190562210166944472727176718501375767973702424656642169212558257"
        "7245793910930758790508707497799356723763185459314157218014300646936606",
        "-1244266149374259157447027490694307519451954125048040645173442122357708537238212929256679570186964689501388853"
        "17857282738852195185632362375227206935001700717419056221016694447272717671850137576797370242465664216921255825"
        "77245793910930758790508707497799356723763185459314157218014300646936606",
        "196768397706108832434401218046908395079672619951322343962935515221968814879",
        "-196768397706108832434401218046908395079672619951322343962935515221968814879",
        "10544835973852305475577568387953946037693254572474141646597768734419527165483361339221809796077827287025222486"
        "45121665750870750952341455173597839875740903920121765626005501448855657098221647223044087712149230780902163034"
        "47672907406306494260347265557611811281654313383497",
        "-1054483597385230547557756838795394603769325457247414164659776873441952716548336133922180979607782728702522248"
        "64512166575087075095234145517359783987574090392012176562600550144885565709822164722304408771214923078090216303"
        "447672907406306494260347265557611811281654313383497",
        "427047",
        "-427047",
        "81856543863229949865307411717645038275510945758537814749232160844289351485471852172626662270166132792505150910"
        "334705532703104971400349296170150117058939300885252778996956",
        "-8185654386322994986530741171764503827551094575853781474923216084428935148547185217262666227016613279250515091"
        "0334705532703104971400349296170150117058939300885252778996956",
        "11577938151244567188615165904003639951619155700869031476428526868516697448208199945969243302133425156061470169"
        "87948857909",
        "-1157793815124456718861516590400363995161915570086903147642852686851669744820819994596924330213342515606147016"
        "987948857909",
        "94089663798853856739797535707144509446798979009292826331267194870662880523684348043254201826322467972003818533"
        "3011214261501267693681777878339707753984890375587248023646920869739576148750778030",
        "-9408966379885385673979753570714450944679897900929282633126719487066288052368434804325420182632246797200381853"
        "33011214261501267693681777878339707753984890375587248023646920869739576148750778030",
        "12770926977749154554253258185065489130897780452887035113204623615156611926840817074710697832690771235078800828"
        "21996357021946680618631451261991566032521034200533398597806696743013088727321199529921154950435385831032453193"
        "119895011784079743410",
        "-1277092697774915455425325818506548913089778045288703511320462361515661192684081707471069783269077123507880082"
        "82199635702194668061863145126199156603252103420053339859780669674301308872732119952992115495043538583103245319"
        "3119895011784079743410",
        "12484594365439504824667126116411560379532608011162188261784732952579595718551939216912931261112627180909253846"
        "258363935011877417495984302385508560070358584377699655038250487243650598",
        "-1248459436543950482466712611641156037953260801116218826178473295257959571855193921691293126111262718090925384"
        "6258363935011877417495984302385508560070358584377699655038250487243650598",
        "17413838857836663496829756456986179322375007437158413911072277842047198555852235221723822004268870247179243838"
        "74873388819696857115564677905327552504",
        "-1741383885783666349682975645698617932237500743715841391107227784204719855585223522172382200426887024717924383"
        "874873388819696857115564677905327552504",
        "9368096919796958094889245340222417626105947858557433047800723019",
        "-9368096919796958094889245340222417626105947858557433047800723019",
        "76669478098694609561491577319843969528266563067895013521486786451595735010640930020326448743208375914951894083"
        "260394091483935932234283855098968632145970697415601093343",
        "-7666947809869460956149157731984396952826656306789501352148678645159573501064093002032644874320837591495189408"
        "3260394091483935932234283855098968632145970697415601093343",
        "1876639712516985144893922794716264029310990922149953750634405350881578456885688177463809312620",
        "-1876639712516985144893922794716264029310990922149953750634405350881578456885688177463809312620",
        "186077",
        "-186077",
        "24038469015057796648084289920894727399732658423825146209930020877671076098132117966877846149087015358546337692"
        "428012385515366055633105998821389203",
        "-2403846901505779664808428992089472739973265842382514620993002087767107609813211796687784614908701535854633769"
        "2428012385515366055633105998821389203",
        "20641259550745643346234485579665129143463532482322387615585139677830682894079763990366000612134891527828252798"
        "37038644467043051338582569522092813755629007883439813925671234446861577992373423214307099466163489204980665290"
        "0001420233970754048793898042171067992448201191787158435561",
        "-2064125955074564334623448557966512914346353248232238761558513967783068289407976399036600061213489152782825279"
        "83703864446704305133858256952209281375562900788343981392567123444686157799237342321430709946616348920498066529"
        "00001420233970754048793898042171067992448201191787158435561",
        "90558282393161622936261650596857143828421884875124973816361813844395166",
        "-90558282393161622936261650596857143828421884875124973816361813844395166",
        "893374152282726891992085958120127485743572202276100990922171",
        "-893374152282726891992085958120127485743572202276100990922171",
        "10460138732403366900278417538985673643986613844609186223227423795627016892186853532040556673138543062565453374"
        "63644052503128705938632249854397026396841423557917929052337959693449818506899320282542917269544270577431968391"
        "90399880526778270712454970430735459654847",
        "-1046013873240336690027841753898567364398661384460918622322742379562701689218685353204055667313854306256545337"
        "46364405250312870593863224985439702639684142355791792905233795969344981850689932028254291726954427057743196839"
        "190399880526778270712454970430735459654847",
        "11006405478224528222596087806373730410653269770536819541927761815276185770501224424557306246604033042960154123"
        "29954372289398853654524721225006003581004995451247487399511260858844108588935136691954558538445962684147337611"
        "140312567681054887671734241832035049841922672004195071",
        "-1100640547822452822259608780637373041065326977053681954192776181527618577050122442455730624660403304296015412"
        "32995437228939885365452472122500600358100499545124748739951126085884410858893513669195455853844596268414733761"
        "1140312567681054887671734241832035049841922672004195071",
        "2967167885422023119778255262377939967247041745814218496240360",
        "-2967167885422023119778255262377939967247041745814218496240360",
        "27660279337221710465542312924049115324595706369165408720389323072728651185127248839482051120466667090934875592"
        "19830075352753072061667201",
        "-2766027933722171046554231292404911532459570636916540872038932307272865118512724883948205112046666709093487559"
        "219830075352753072061667201",
        "1003655344057107767912014692725976261732681876044961311820943946784371",
        "-1003655344057107767912014692725976261732681876044961311820943946784371",
        "21900502732037517315370094764239443613058564433",
        "-21900502732037517315370094764239443613058564433",
        "45583003657081227658306304711498324162428223935090104",
        "-45583003657081227658306304711498324162428223935090104",
        "204245432840569041148483982796093177932369679988233999329901019356075995960",
        "-204245432840569041148483982796093177932369679988233999329901019356075995960",
        "54884247902140437035368361407902527545416356458607442580170745253262030",
        "-54884247902140437035368361407902527545416356458607442580170745253262030",
        "53345181556287441580078030523987943111694638404704741137250978818749827445968869599482556786213854209855391087"
        "42608260405936297075345765000664456806209794363451383928857878909914356480954702762980348813177584480927161733"
        "854397043441077512115118243",
        "-5334518155628744158007803052398794311169463840470474113725097881874982744596886959948255678621385420985539108"
        "74260826040593629707534576500066445680620979436345138392885787890991435648095470276298034881317758448092716173"
        "3854397043441077512115118243",
        "58648329596476963999096197386322149070291245047237675150658170439655084080353684972860905619407416198317413232"
        "5139036388003751640146943",
        "-5864832959647696399909619738632214907029124504723767515065817043965508408035368497286090561940741619831741323"
        "25139036388003751640146943",
        "51604890704120552134782487491431533140273131932747721835410296149465275053455153889908991560353334614083104590"
        "47357741425430914259324755065994103",
        "-5160489070412055213478248749143153314027313193274772183541029614946527505345515388990899156035333461408310459"
        "047357741425430914259324755065994103",
        "2027629455583867858236950998133711110883394281732352207813586603417947074456218393483520509566027",
        "-2027629455583867858236950998133711110883394281732352207813586603417947074456218393483520509566027",
        "5188557124098846103707325218",
        "-5188557124098846103707325218",
        "40002070934972427393886392445473182380993603508349016637217600573181851377809575582424382342394245740898666775"
        "96130170989768846230860308279805545235094308583613677866150952521526398111587051825076174548828054000183459696"
        "32806081496172562211701111188286396198492796040003060705842273291",
        "-4000207093497242739388639244547318238099360350834901663721760057318185137780957558242438234239424574089866677"
        "59613017098976884623086030827980554523509430858361367786615095252152639811158705182507617454882805400018345969"
        "632806081496172562211701111188286396198492796040003060705842273291",
        "50777416184690457932776465643589929209604763332446014500341458305011817861886700697078917770753770203280523693"
        "95749044352605314330803964782636667529924732654192256597972743806214879074858492363595605",
        "-5077741618469045793277646564358992920960476333244601450034145830501181786188670069707891777075377020328052369"
        "395749044352605314330803964782636667529924732654192256597972743806214879074858492363595605",
        "76961899095841124292366078904126595282939876260262667204402611724385481344662248071562423010700861767815849256"
        "47653568383958946454001",
        "-7696189909584112429236607890412659528293987626026266720440261172438548134466224807156242301070086176781584925"
        "647653568383958946454001",
        "41730802002903007856844193309809372110785772193979984525942819290735737183076530167212641207956281118256497399"
        "2528737210195074535804805307396531464692210817793443042424312992541689337630019211372",
        "-4173080200290300785684419330980937211078577219397998452594281929073573718307653016721264120795628111825649739"
        "92528737210195074535804805307396531464692210817793443042424312992541689337630019211372",
        "1322555438304138854190608504305314090997872332525802468309",
        "-1322555438304138854190608504305314090997872332525802468309",
        "22432524633900977302060225985970975453624418653454454353672083649006085740687017259119009770056949878375259816"
        "66534993121316833074810732688679185645071871012387337549509711648733018",
        "-2243252463390097730206022598597097545362441865345445435367208364900608574068701725911900977005694987837525981"
        "666534993121316833074810732688679185645071871012387337549509711648733018",
        "99699963124635688668647631940222046270289553610789184641465016693741133723532737479868725813700346159449339430"
        "36547236335880502903557000092038637008194300559255381370941259435767764230627084232964318245625153358531059066"
        "38174471031706521164070138118239692600817313403027773040755",
        "-9969996312463568866864763194022204627028955361078918464146501669374113372353273747986872581370034615944933943"
        "03654723633588050290355700009203863700819430055925538137094125943576776423062708423296431824562515335853105906"
        "638174471031706521164070138118239692600817313403027773040755",
        "74072327275841418578604139691331939732712862889968853706437436010418446972474255704850732301776159355161892495"
        "09933008589795827697527731537095440446937896691012576063103682886965547257404970422133160836803032660735755375"
        "228",
        "-7407232727584141857860413969133193973271286288996885370643743601041844697247425570485073230177615935516189249"
        "50993300858979582769752773153709544044693789669101257606310368288696554725740497042213316083680303266073575537"
        "5228",
        "66507856432274251794176455954413617080912111625650403908424515766595169565610373272262880697471290673940957493"
        "06733654287812743450009332117532202384811331871096118645883148120833622161688393162194170717529201051643990274"
        "3884847403671155360181449053131615233540637713255704186616742945621336873834200241",
        "-6650785643227425179417645595441361708091211162565040390842451576659516956561037327226288069747129067394095749"
        "30673365428781274345000933211753220238481133187109611864588314812083362216168839316219417071752920105164399027"
        "43884847403671155360181449053131615233540637713255704186616742945621336873834200241",
        "3196186382855338098803381285521459335945921111064044594669972865344914974690553600630829852067149732406363404"
        "1",
        "-3196186382855338098803381285521459335945921111064044594669972865344914974690553600630829852067149732406363404"
        "1",
        "11961837752393775542483983252934690429044712527770299833082568674562471438016553598370171880075340652449958043"
        "0492483313401840673306022",
        "-1196183775239377554248398325293469042904471252777029983308256867456247143801655359837017188007534065244995804"
        "30492483313401840673306022",
        "40568191548195771052411067064808801500596994421272589417643322890238156342602178410014153371416416864087897250"
        "4794623170560976727288628780986689105062652396339731589340681696758070055865849332874664598654305386",
        "-4056819154819577105241106706480880150059699442127258941764332289023815634260217841001415337141641686408789725"
        "04794623170560976727288628780986689105062652396339731589340681696758070055865849332874664598654305386",
        "80071205989351736846133464673563483",
        "-80071205989351736846133464673563483",
        "97007738645314356256162148999140653244608516004632919688603319224579888022906986652494818171600702628601156179"
        "49877440060186269123630022169856579023685715276196199558700467573542360702057439871151548632003937134635666",
        "-9700773864531435625616214899914065324460851600463291968860331922457988802290698665249481817160070262860115617"
        "949877440060186269123630022169856579023685715276196199558700467573542360702057439871151548632003937134635666",
        "64944106993602113652248278796057650905995695388886180354923002182559697540323513",
        "-64944106993602113652248278796057650905995695388886180354923002182559697540323513",
        "37929576313535611121803978435959309812321783154717",
        "-37929576313535611121803978435959309812321783154717",
        "12010003384124788112644609012690156636294039409224659957115633662825323928881171643094607919625877007869256895"
        "31323402454933712",
        "-1201000338412478811264460901269015663629403940922465995711563366282532392888117164309460791962587700786925689"
        "531323402454933712",
        "470447114867440006531646544662395180489380",
        "-470447114867440006531646544662395180489380",
        "18864149750332228907594547883682787225234108265508219442440067264650340559370873515010711128053934251496810916"
        "97659539390880213755450593178650888546158680682861726300055346238147353584",
        "-1886414975033222890759454788368278722523410826550821944244006726465034055937087351501071112805393425149681091"
        "697659539390880213755450593178650888546158680682861726300055346238147353584",
        "46648927260740114124240611915346825184344028525342440664398592844216695155476444942212678603100500824139039602"
        "65959420616932209365599069348",
        "-4664892726074011412424061191534682518434402852534244066439859284421669515547644494221267860310050082413903960"
        "265959420616932209365599069348",
        "28780798756024002725983431800204693077146606485161761312577563898465001036018344",
        "-28780798756024002725983431800204693077146606485161761312577563898465001036018344",
        "32330329650876",
        "-32330329650876",
        "21199792911211672356461265376314953269386215911981051600160674662982820313955143880375927617739401605292302715"
        "36093864046314956321286102399202685013097514391108059946817681956440747156573",
        "-2119979291121167235646126537631495326938621591198105160016067466298282031395514388037592761773940160529230271"
        "536093864046314956321286102399202685013097514391108059946817681956440747156573",
        "26369985255551385149412675955655500019404187073549267525636897086956973979424128643943886536025744838333242717"
        "42887508749930619592930958432773664045928224304138426084400691381625132966630981949166286506232853777875204072"
        "74835441660863529425698257",
        "-2636998525555138514941267595565550001940418707354926752563689708695697397942412864394388653602574483833324271"
        "74288750874993061959293095843277366404592822430413842608440069138162513296663098194916628650623285377787520407"
        "274835441660863529425698257",
        "11286942214470835148335659431724940619613923515702366616067787012972636080826937579677042251497304154070456882"
        "9366528438361283531687734157260158621350455810264715501346680625219836082978560303032062769785435313193339089"
        "6",
        "-1128694221447083514833565943172494061961392351570236661606778701297263608082693757967704225149730415407045688"
        "29366528438361283531687734157260158621350455810264715501346680625219836082978560303032062769785435313193339089"
        "6",
        "6916983731776108089130775823204431120044571113273264",
        "-6916983731776108089130775823204431120044571113273264",
        "75914457793044064895413508037682032379902701971013411488690441608545",
        "-75914457793044064895413508037682032379902701971013411488690441608545",
        "88794992477140811404799215560211605101542130259121534902998175186681111412939959127808799742445904211911620749"
        "44570118497100570991099380592606670090324723096261264086252974733149488230484359814997329229447712203652808121"
        "303397231512080257394400660537777330",
        "-8879499247714081140479921556021160510154213025912153490299817518668111141293995912780879974244590421191162074"
        "94457011849710057099109938059260667009032472309626126408625297473314948823048435981499732922944771220365280812"
        "1303397231512080257394400660537777330",
        "1724506383335075569722951957439066815",
        "-1724506383335075569722951957439066815",
        "1194371342067583821224146035467746385145120448082902327311395191487125759843115454058224224089457130",
        "-1194371342067583821224146035467746385145120448082902327311395191487125759843115454058224224089457130",
        "116571209611185337284731713897921002952811284109399364843701582086430272601727355870457693093",
        "-116571209611185337284731713897921002952811284109399364843701582086430272601727355870457693093",
        "26168929789567416417896877953711683735315284288420053745760833960409035809279614614583672230970848586995471196"
        "762264833662013726559369765619103011658619869727814614782931489481458661981043479676591818357",
        "-2616892978956741641789687795371168373531528428842005374576083396040903580927961461458367223097084858699547119"
        "6762264833662013726559369765619103011658619869727814614782931489481458661981043479676591818357",
        "243012047985288247713378637185988647187985010392388570351653505841125573018162558460717652828862937",
        "-243012047985288247713378637185988647187985010392388570351653505841125573018162558460717652828862937",
        "10664054546419657059895154308389295209775305216580625182685797954089483388356503442301133821162999463846286618"
        "424679215827037042324",
        "-1066405454641965705989515430838929520977530521658062518268579795408948338835650344230113382116299946384628661"
        "8424679215827037042324",
        "93382430984727342024648229617198660330774557968214720265565362040755873830899272200516094884487181897372100083"
        "086702655979998495443",
        "-9338243098472734202464822961719866033077455796821472026556536204075587383089927220051609488448718189737210008"
        "3086702655979998495443",
        "13126062810625043063456380164790384012915764511630796458248365510538114092330596186281347044586364215270683612"
        "29286661395297184400519671556300967449462495785202202717347105297692871884400126445526859260137554224216092431"
        "5548654836823549859553",
        "-1312606281062504306345638016479038401291576451163079645824836551053811409233059618628134704458636421527068361"
        "22928666139529718440051967155630096744946249578520220271734710529769287188440012644552685926013755422421609243"
        "15548654836823549859553",
        "93685823627658145571871960240012278498881680774722666597726009716974283664927089269062589055908330597063966845"
        "92884687526358204703256054330603971127944678906",
        "-9368582362765814557187196024001227849888168077472266659772600971697428366492708926906258905590833059706396684"
        "592884687526358204703256054330603971127944678906",
        "278701771665221100457912961846034172",
        "-278701771665221100457912961846034172",
        "382464310254920012603200760",
        "-382464310254920012603200760",
        "10867016529316456594131817040758913695014871150001502347040559247906063999152774247717615023854077508488744570"
        "84738431566772206432850777390818546802908541311070886519070558468667864533850452989704316665227997074954119733"
        "405730362633188789872620053510199052652185571293239445061650299573526583634686290646340",
        "-1086701652931645659413181704075891369501487115000150234704055924790606399915277424771761502385407750848874457"
        "08473843156677220643285077739081854680290854131107088651907055846866786453385045298970431666522799707495411973"
        "3405730362633188789872620053510199052652185571293239445061650299573526583634686290646340",
        "1436027919103852779047018224513001412434295916624702899496423156978055321701822379",
        "-1436027919103852779047018224513001412434295916624702899496423156978055321701822379",
        "358956740433261819154697401028765647885314537021358004573",
        "-358956740433261819154697401028765647885314537021358004573",
        "25709198106862604430909769569079115801174312016678934328762998521757113248208171034554384693220583136075789623"
        "86364736310503021461418759938196980029731001153192509640082331671491566785848363799371983266719541295357316341"
        "488191889371987260280114237",
        "-2570919810686260443090976956907911580117431201667893432876299852175711324820817103455438469322058313607578962"
        "38636473631050302146141875993819698002973100115319250964008233167149156678584836379937198326671954129535731634"
        "1488191889371987260280114237",
        "25162923422743354542149586612896418135445747897968173426132346622460254031452425686287824478617146278670264713"
        "88615522899228314190384333074864760533784589772636427026227022138855342576436559664686912275262583751979312111"
        "6201637138123589",
        "-2516292342274335454214958661289641813544574789796817342613234662246025403145242568628782447861714627867026471"
        "38861552289922831419038433307486476053378458977263642702622702213885534257643655966468691227526258375197931211"
        "16201637138123589",
        "4278027626",
        "-4278027626",
        "13701895078474585475247137503379489809369496012756504256009512583880126487325483060",
        "-13701895078474585475247137503379489809369496012756504256009512583880126487325483060",
        "84078690452537976978930053771118906015253724709722081849450783278955951443374188114840402036940873730583346388"
        "00405324047109819504330154496717387720900211730411783168793891331427556543321863957330350478293301465808772469"
        "38698632854141466195209370012956133251007728880713807067719044277",
        "-8407869045253797697893005377111890601525372470972208184945078327895595144337418811484040203694087373058334638"
        "80040532404710981950433015449671738772090021173041178316879389133142755654332186395733035047829330146580877246"
        "938698632854141466195209370012956133251007728880713807067719044277",
        "3276292788321967735809171244238550320799741743618059640716169790896705284371",
        "-3276292788321967735809171244238550320799741743618059640716169790896705284371",
        "14447503183309521680388808138315512234824198695630174663787667432220464936520509676051134920309256849483668112"
        "29446235163057029451862026449099533578455062305802501669339640305034074716552601620379378463996993533643594750"
        "826540",
        "-1444750318330952168038880813831551223482419869563017466378766743222046493652050967605113492030925684948366811"
        "22944623516305702945186202644909953357845506230580250166933964030503407471655260162037937846399699353364359475"
        "0826540",
        "24086541858702055427502392901637",
        "-24086541858702055427502392901637",
        "43300813386919207622246085267178243893011734802901111060789016894807668614520078924693665982300521822936622051"
        "13692558414456231710116801557663552676919",
        "-4330081338691920762224608526717824389301173480290111106078901689480766861452007892469366598230052182293662205"
        "113692558414456231710116801557663552676919",
        "27418448940760548112970686808757044592831257648000991603843244426565505080207854209562533723933529598541150",
        "-27418448940760548112970686808757044592831257648000991603843244426565505080207854209562533723933529598541150",
        "48643493485053726417355916232539355620794342945333030159069398057885622285454354559994909521324216301073814860"
        "91394263343039603335970384360527032450993718152333512135859319365168",
        "-4864349348505372641735591623253935562079434294533303015906939805788562228545435455999490952132421630107381486"
        "091394263343039603335970384360527032450993718152333512135859319365168",
        "1626611771502100547320818336906281142864525046004643066115702536679123387159152005305066",
        "-1626611771502100547320818336906281142864525046004643066115702536679123387159152005305066",
        "14293419224795219525714860242008460020503397376158988250120766700936504062",
        "-14293419224795219525714860242008460020503397376158988250120766700936504062",
        "82607531389170232335664212922989627642378071519433185255439705445006325973764935243374378260328652128144296430"
        "10352970402898369401423576606526232369458199913160215970566401517084565439231237176671986172844275163759328663"
        "201716196906130863901168073596480102005930047541965611641872232312988889482629",
        "-8260753138917023233566421292298962764237807151943318525543970544500632597376493524337437826032865212814429643"
        "01035297040289836940142357660652623236945819991316021597056640151708456543923123717667198617284427516375932866"
        "3201716196906130863901168073596480102005930047541965611641872232312988889482629",
        "52777588745161372777327733548865386610325331226673422582451538723416735982122372238094529020094889313725630686"
        "31458175710208259076234089320690",
        "-5277758874516137277732773354886538661032533122667342258245153872341673598212237223809452902009488931372563068"
        "631458175710208259076234089320690",
        "1604105217156493424796219158328988017738562338480346273566670218046",
        "-1604105217156493424796219158328988017738562338480346273566670218046",
    };

    boost::filesystem::ifstream is(root / "cpp_int1024_serial64.txt");
    std::cout << "Testing cpp_int1024_serial64.txt with T=" << typeid(T).name() << std::endl;
    // is.peek();
    BOOST_CHECK(is.good());
    boost::archive::text_iarchive ia(is);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
#ifndef BOOST_NO_EXCEPTIONS
        try {
#endif
            T val;
            ia >> val;
            BOOST_CHECK_EQUAL(val, T(text_array[i]));
#ifndef BOOST_NO_EXCEPTIONS
        } catch (const boost::exception& e) {
            std::cout << "Caught boost::exception with:\n";
            std::cout << diagnostic_information(e);
        } catch (const std::exception& e) {
            std::cout << "Caught std::exception with:\n";
            std::cout << e.what() << std::endl;
        }
#endif
    }

    boost::filesystem::ifstream is2(root / "cpp_int1024_serial32.txt");
    std::cout << "Testing cpp_int1024_serial32.txt with T=" << typeid(T).name() << std::endl;
    // is2.peek();
    BOOST_CHECK(is2.good());
    boost::archive::text_iarchive ia2(is2);
    for (unsigned i = 0; i < sizeof(text_array) / sizeof(text_array[0]); ++i) {
#ifndef BOOST_NO_EXCEPTIONS
        try {
#endif
            T val;
            ia2 >> val;
            BOOST_CHECK_EQUAL(val, T(text_array[i]));
#ifndef BOOST_NO_EXCEPTIONS
        } catch (const boost::exception& e) {
            std::cout << "Caught boost::exception with:\n";
            std::cout << diagnostic_information(e);
        } catch (const std::exception& e) {
            std::cout << "Caught std::exception with:\n";
            std::cout << e.what() << std::endl;
        }
#endif
    }
}

int main(int argc, char const* argv[]) {
    if (argc == 2) {
        root = argv[1];
        std::cout << "Setting root directory to " << argv[1] << std::endl;
    }
    using namespace nil::crypto3::multiprecision;
    test64<cpp_int>();
    test64<number<cpp_int_backend<64, 64>>>();
    test128<cpp_int>();
    test128<number<cpp_int_backend<128, 128>>>();
    test1024<cpp_int>();
    test1024<number<cpp_int_backend<1024, 1024>>>();
    return boost::report_errors();
}
